我只是试图查看输入的值是否与数组中已有的值匹配,以及它是否返回“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);
}
}
感谢您的帮助(和耐心)
答案 0 :(得分:6)
使用equals方法。检查here为什么要这样做。
if (newAccount.equals(accountNums[i]))
答案 1 :(得分:3)
Jayamohan的回答是正确和有效但我建议使用整数而不是字符串。这是一种更有效的方法,因为CPU处理数字(整数)比处理字符串要容易得多。
在这种情况下需要做的是将newAccount
和accountNums
更改为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()