数组与java中的if方法匹配

时间:2014-11-03 06:22:30

标签: java

如何通过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);
        }

    }

}

4 个答案:

答案 0 :(得分:1)

equals()上使用String方法,即:

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

如果您使用的是Java SE7或更高版本,那么您也可以从支持String值的案例陈述中受益:

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

答案 1 :(得分:0)

将Amy,Fred,Buffy,...插入字符串列表并说出if(list.contains(firstName))....

修改

或者您可以将它们分组为2个列表,一个用于MR,另一个用于MS

答案 2 :(得分:0)

我认为@ 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);
    }
}

答案 3 :(得分:0)

我建议使用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);
        }

    }
}