如何通过if方法匹配数组的字符串。意味着我在一个字符串数组中取一些值,并接受用户输入,然后输入匹配该字符串数组的对或错,如果对给定一个值,或者错给定其他值。我想在循环中使用输入。我有这样一个代码,我做它没有循环可以匹配,但不能使用循环。
public class third {
public static void main(String[] args) {
Scanner user_input = new Scanner(System.in);
System.out.println("Enter a name:n");
String first_name;
first_name=user_input.next();
String last_name;
last_name=user_input.next();
if(first_name.matches("Elory"))
{
System.out.println("MR. " + first_name + " " + last_name);
}
else if(first_name.matches("Fred"))
{
System.out.println("MR. "+ first_name+" "+last_name);
}
else if(first_name.matches("Graham"))
{
System.out.println("MR. "+ first_name+" "+last_name);
}
else if(first_name.matches("Amy"))
{
System.out.println("MS. "+ first_name+" "+last_name);
}
else if(first_name.matches("Buffy"))
{
System.out.println("MS. "+ first_name+" "+last_name);
}
else if(first_name.matches("Cathy"))
{
System.out.println("MS. "+ first_name+" "+last_name);
}
else
{
System.out.println(first_name+" "+last_name);
}
}
}
在String
上使用equals()
方法,即:
first_name.equals("Amy")
此外,由于您正在复制逻辑,您可能会受益于逻辑运算符(如||
):
if(first_name.equals("Amy") || first_name.equals("Buffy") || first_name.equals("Cathy")) {
System.out.println("MS. "+ first_name+" "+last_name);
}
如果您使用的是JavaSE7或更高版本,那么您还可以从支持String
值的case语句中获益:
switch(first_name) {
case "Elory":
case "Fred":
case "Graham":
System.out.println("MR. " + first_name + " " + last_name);
break;
case "Amy":
case "Buffy":
case "Cathy":
System.out.println("MS. " + first_name + " " + last_name);
break;
default:
System.out.println(first_name+" "+last_name);
break;
}
我建议使用Map,并根据每个名称而不是两个列表存储称呼。推理:
- 更少的代码
- 没有对男性/女性前缀的假设,以防其中一些是Miss、Mrs、Ms等
- 通过在键和查找上使用String.toLowerCase(),它将处理混合大小写AMY、AMY等,这与switch/case解决方案或2-list解决方案不同
代码
public class third {
public static void main(String[] args) {
Scanner user_input = new Scanner(System.in);
System.out.println("Enter a name:n");
String first_name = user_input.next();
String last_name = user_input.next();
Map<String, String> salutations = new HashMap<String, String>();
salutations.put("Amy".toLowerCase(), "MS");
salutations.put("Buffy".toLowerCase(), "MS");
salutations.put("Cathy".toLowerCase(), "MS");
salutations.put("Elory".toLowerCase(), "MR");
salutations.put("Fred".toLowerCase(), "MR");
salutations.put("Graham".toLowerCase(), "MR");
String salutation = null;
if (first_name != null) {
salutation = salutations.get(first_name.toLowerCase());
}
if (salutation != null) {
System.out.println(String.format("%s. %s %s", salutation, first_name, last_name));
} else {
System.out.println(first_name + " " + last_name);
}
}
}
插入Amy、Fred、Buffy,。。。放入字符串列表中,并说出if(list.contents(firstName))…
编辑
或者,您可以将它们分组到两个列表中,一个用于MR,另一个用于MS
我认为@norbert radyk提出的解决方案是最好的。但如果你使用Java6,你可以做这样的事情:
public class third {
public static void main(String[] args) {
Scanner user_input = new Scanner(System.in);
String[] female_names = {"Amy", "Buffy", "Cathy"};
String[] male_names = {"Elory", "Fred", "Graham"};
System.out.println("Enter a name:n");
String first_name;
first_name=user_input.next();
String last_name;
last_name=user_input.next();
if(Arrays.asList(female_names).contains(first_name)) {
System.out.print("MS. ");
} else if(Arrays.asList(male_names).contains(first_name)) {
System.out.print("MR. ");
}
System.out.println(first_name+" "+last_name);
}
}