简单数组:检查值是否匹配

时间:2013-03-04 04:00:25

标签: java arrays

我只是试图查看输入的值是否与数组中已有的值匹配,以及它是否返回“Valid”。我意识到这很简单,但我不能让它起作用:

 public static void main(String[] args) {

        Scanner keyboard = new Scanner(System.in);
        String[] accountNums = { "5658845", "8080152", "1005231", "4520125", "4562555",
                                 "6545231", "7895122", "5552012", "3852085", "8777541", 
                                 "5050552", "7576651", "8451277", "7881200", "1302850", 
                                 "1250255", "4581002" };

        String newAccount;
        String test = "Invalid";

        newAccount = keyboard.next();

        for (int i = 0; i < accountNums.length; i++)
        {        
            if(newAccount == accountNums[i])
            {
                test = "Valid";
            }
        }

        System.out.println(test);
    }
}

感谢您的帮助(和耐心)

4 个答案:

答案 0 :(得分:6)

使用equals方法。检查here为什么要这样做。

if (newAccount.equals(accountNums[i]))

答案 1 :(得分:3)

Jayamohan的回答是正确和有效但我建议使用整数而不是字符串。这是一种更有效的方法,因为CPU处理数字(整数)比处理字符串要容易得多。

在这种情况下需要做的是将newAccountaccountNums更改为int而不是String,并删除{{1}中的所有引号1}}初始化。您可以调用accountNums而不是调用keyboard.next(),它返回一个整数。 if语句很好。

答案 2 :(得分:1)

你为什么要使用数组?

List<String> accountNums = Arrays.asList( "5658845", "8080152", "1005231", "4520125", "4562555",
     "6545231", "7895122", "5552012", "3852085", "8777541", 
     "5050552", "7576651", "8451277", "7881200", "1302850", 
     "1250255", "4581002" );

String test = "Invalid";

然后你只需要这个(没有循环):

if (accountNums.contains(newAccount)) {
    test = "Valid";
}

另外,它更容易阅读和理解。

答案 3 :(得分:0)

您无法将字符串与==进行比较 你必须使用.equals()