2

我只是想查看输入的值是否与数组中已经存在的值匹配,以及它是否返回“有效”。我意识到这很简单,但我无法让它工作:

 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

4 回答 4

6

使用等于方法。在这里查看为什么。

if (newAccount.equals(accountNums[i]))
于 2013-03-04T04:02:24.067 回答
3

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

在这种情况下必须做的是将 s 更改为s 而不是newAccounts并从初始化中删除所有引号。您可以调用而不是调用,它返回一个整数。if 语句就可以了。accountNumsintStringaccountNumskeyboard.next()keyboard.nextInt()

于 2013-03-04T04:06:25.757 回答
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";
}

此外,它更易于阅读和理解。

于 2013-03-04T04:46:41.703 回答
0

你不能用 == 比较字符串你必须使用 .equals()

于 2014-09-13T00:08:06.153 回答