JAVA输入比较&;忽视负面结果

JAVA输入比较&;忽视负面结果,java,validation,loops,Java,Validation,Loops,我是JAVA新手,正在努力解决一个我找不到答案的特定问题,因此我决定询问StackOverflow的好人 我正在尝试建立一个ATM程序。我已经创建了一个对象数组(银行的客户),其属性包括卡号、pin、余额等。当任何用户尝试“登录”ATM时,他都应该输入卡号 在下面的代码中,我尝试模拟ATM通过客户阵列,并将输入号码与每个客户的所有现有卡号进行检查,直到找到匹配的卡号为止,它工作正常。问题是,如果它在位置10处发现与客户机匹配,它将在成功之前显示“不存在的卡”10次 所以我想问,是否有一种方法可以

我是JAVA新手,正在努力解决一个我找不到答案的特定问题,因此我决定询问StackOverflow的好人

我正在尝试建立一个ATM程序。我已经创建了一个对象数组(银行的客户),其属性包括卡号、pin、余额等。当任何用户尝试“登录”ATM时,他都应该输入卡号

在下面的代码中,我尝试模拟ATM通过客户阵列,并将输入号码与每个客户的所有现有卡号进行检查,直到找到匹配的卡号为止,它工作正常。问题是,如果它在位置10处发现与客户机匹配,它将在成功之前显示“不存在的卡”10次

所以我想问,是否有一种方法可以让程序忽略所有这些不匹配,只在找到匹配的情况下才继续。只有当它找到0个匹配项时,才给我“不存在的卡”

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