java中if方法的数组匹配

java中if方法的数组匹配,java,Java,如何通过if方法匹配数组字符串。意思是我在一个字符串数组中获取一些值,然后获取用户输入,然后输入匹配字符串数组是对的还是错的,如果正确给出一个值,或者错误给出另一个值。我想获取输入,在循环中使用它。我有这样一个代码,我做它没有循环可以匹配,但不能使用循环 public class third { public static void main(String[] args) { Scanner user_input = new Scanner(System.in);

如何通过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")
此外,由于您正在复制逻辑,您可能会受益于逻辑运算符(例如
|
):

如果您使用的是Java SE7或更高版本,那么您还可以从支持
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; 
}

插入艾米、弗雷德、布菲,。。。输入字符串列表,并说出if(list.contains(firstName))

编辑


或者你可以把它们分成两个列表,一个是MR,另一个是MS,我认为@norbert radyk提出的解决方案是最好的。但如果您使用Java 6,您可以执行以下操作:

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);
    }
}

我建议使用一张地图,并针对每个名字存储问候语,而不是两个列表。理由:

  • 更少的代码
  • 如果某些前缀是Miss、Mrs、Ms等,则不对男性/女性前缀进行假设
  • 通过在键和查找上使用String.toLowerCase(),它将处理混合大小写AMY、AMY等,这与switch/case解决方案或2-list解决方案不同
代码

公共类第三{
公共静态void main(字符串[]args){
扫描仪用户输入=新扫描仪(System.in);
System.out.println(“输入名称:\n”);
字符串first\u name=user\u input.next();
字符串last_name=user_input.next();
映射称呼=新建HashMap();
问候语.put(“Amy.toLowerCase(),“MS”);
问候语.put(“Buffy.toLowerCase(),“MS”);
问候语。put(“Cathy.toLowerCase(),“MS”);
问候语。放在(“Elory”。toLowerCase(),“MR”);
问候语。把(“Fred.toLowerCase(),“MR”);
问候语。put(“Graham.toLowerCase(),“MR”);
字符串称呼=null;
if(名字!=null){
称呼=称呼.get(first_name.toLowerCase());
}
如果(称呼!=null){
System.out.println(String.format(“%s.%s%s”,称呼,名字,姓氏));
}否则{
System.out.println(名字+“”+姓氏);
}
}
}

使用接受字符串的
equals()
。不
matches()
接受REGEXequalsIgnoreCase的是您应该看到的!您还可以使用“Amy”.equals(first_name),以避免可能出现的NullPointerException
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);
    }
}
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);
        }

    }
}