JAVA输入比较&;忽视负面结果
我是JAVA新手,正在努力解决一个我找不到答案的特定问题,因此我决定询问StackOverflow的好人 我正在尝试建立一个ATM程序。我已经创建了一个对象数组(银行的客户),其属性包括卡号、pin、余额等。当任何用户尝试“登录”ATM时,他都应该输入卡号 在下面的代码中,我尝试模拟ATM通过客户阵列,并将输入号码与每个客户的所有现有卡号进行检查,直到找到匹配的卡号为止,它工作正常。问题是,如果它在位置10处发现与客户机匹配,它将在成功之前显示“不存在的卡”10次 所以我想问,是否有一种方法可以让程序忽略所有这些不匹配,只在找到匹配的情况下才继续。只有当它找到0个匹配项时,才给我“不存在的卡”JAVA输入比较&;忽视负面结果,java,validation,loops,Java,Validation,Loops,我是JAVA新手,正在努力解决一个我找不到答案的特定问题,因此我决定询问StackOverflow的好人 我正在尝试建立一个ATM程序。我已经创建了一个对象数组(银行的客户),其属性包括卡号、pin、余额等。当任何用户尝试“登录”ATM时,他都应该输入卡号 在下面的代码中,我尝试模拟ATM通过客户阵列,并将输入号码与每个客户的所有现有卡号进行检查,直到找到匹配的卡号为止,它工作正常。问题是,如果它在位置10处发现与客户机匹配,它将在成功之前显示“不存在的卡”10次 所以我想问,是否有一种方法可以
for (i = 0; i < clients.length; i++) {
if (input.equals(clients[i].accountnumber)) {
System.out.println("Welcome");
} else {
System.out.println("Inexistent Card");
}
}
for(i=0;i
实现这一点最简单的方法是:
int indexOfMatchingCard = -1;
for (... {
if (match) {
indexOfMatchingCard = current index
之后,您可以检查indexOfMatchingCard是否>=0;同时,它会告诉你哪张牌匹配。如果以后发现其他卡不匹配,请确保不重置该标记
如果你不需要记住匹配的索引;您可以使用一个简单的布尔标记(您将其初始化为false一次,并在匹配时更改为true)。这正是您所写的
再想一想:直到你搜索了所有的帐户,没有找到你想要的帐户,你才知道这个帐户是不存在的。您需要以同样的方式组织代码。因为
客户机[0]
不是您要查找的对象,客户机[1]
可能是,所以您现在还不能说“不存在”…请考虑使用找到的布尔变量
boolean found = false;
for (i = 0; i < clients.length; i++) {
if (input.equals(clients[i].accountnumber)) {
System.out.println("Welcome");
found = true;
break;
}
}
我不知道这是否是你的意思,但我通过添加几行来修复它-我将I++从if语句的else部分的fore循环中移动,然后添加另一个if语句,检查计数器是否大于数组的长度,如果大于,则打印不存在的值part@AdrianDevder听起来太可怕了<代码>i++
属于for循环。被接受的答案是正确的,但我不想把它给你。我宁愿解释一下,让你自己弄明白。
if (!found) {
System.out.println("Inexistent Card");
}