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

时间:2016-03-24 00:24:58

标签: java validation loops

我是JAVA的新手,我正在努力解决一个我无法找到答案的具体问题,所以我决定向StackOverflow的好人询问。

我正在尝试建立一个ATM程序。我已经创建了一个对象数组(银行的客户端),其中包含诸如cardnumber,pin,balance等属性。当任何用户尝试并且"登录"他应该在自动取款机上输入他的卡号。

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

所以我想问一下程序是否有办法忽略所有这些不匹配,只有在找到匹配时才会继续。给我一张“不存在的卡片”#34;只有当它找到0匹配时。

    for (i = 0; i < clients.length; i++) {
        if (input.equals(clients[i].accountnumber)) {
            System.out.println("Welcome");
        } else {
            System.out.println("Inexistent Card");
        }
    }

3 个答案:

答案 0 :(得分:2)

考虑使用found布尔变量

boolean found = false;
for (i = 0; i < clients.length; i++) {
    if (input.equals(clients[i].accountnumber)) {
        System.out.println("Welcome");
        found = true;
        break;
    }
}

然后循环

if (!found) {
   System.out.println("Inexistent Card");
}

答案 1 :(得分:1)

这正是你所写的!

考虑一下:在您搜索完所有帐户但未找到所需帐户之前,您不知道该帐户不存在。您需要以相同的方式组织代码。仅仅因为clients[0]不是你要找的那个,clients[1]可能是,所以你不能说“不存在”......

答案 2 :(得分:0)

实现这一目标的最简单方法:

int indexOfMatchingCard = -1;
for (... {
  if (match) {
     indexOfMatchingCard = current index

之后,您可以检查indexOfMatchingCard是否>> 0;同时它告诉你哪些卡匹配。如果您以后发现其他卡片不匹配,请确保重置该标记!

如果您不需要记住匹配的索引;您可以使用一个简单的布尔标记(初始化为false一次;在匹配时更改为true)。