当前位置: 首页 > 知识库问答 >
问题:

只迭代一次if语句的Java for循环

巴宏恺
2023-03-14
List <Account> Accounts = new LinkedList<Account>();   
public void add() {
    Employee Geoff = new Employee("Geoff", "password1");
    Manager Bob = new Manager("Bob", "password2");
    Employee John = new Employee("John", "password3");

    Accounts.add(Geoff);
    Accounts.add(Bob);
    Accounts.add(John);
    list();

    }
System.out.println("Hello welcome: ");
System.out.println("Please enter your name: ");
String empName = Scan.nextLine();

for (Account a : Accounts) { 
        System.out.println(a);
        if (a.getname().equals(empName)) {

            System.out.println("\nPlease enter your passcode: ");

            String code = Scan.nextLine();

                if (a.check(code) == true) {
                    System.out.println("logged in");
                }
            }
        System.out.println("Employee does not exist!");
        login();

    }

共有1个答案

狄楷
2023-03-14

查看员工的名字是否与列表中的一个匹配,然后if语句继续,进一步询问问题等...它似乎只迭代一次,然后停止,因为它只会找到第一个用户,并告诉我其他帐户不退出,即使他们这样做了!!

如果它对一个员工有效,并告诉其他人不存在,那么您的for循环不会迭代一次。

您得到的输出正是代码的样子。您只获得一次用户名,然后尝试与列表中的每个员工匹配相同的名称。如果姓名相等,则要求输入密码,否则打印出员工不存在。代码中的一切都是正确的。您应该在您的问题中添加预期的行为,这样我或其他人就可以在不猜测您的方法的目的的情况下修复您的代码。

System.out.println("Please enter your name: ");
String empName = Scan.nextLine();
boolean userFound = false;
for (Account a : Accounts) { 
        System.out.println(a);
        if (a.getname().equals(empName)) {
            System.out.println("\nPlease enter your passcode: ");
            String code = Scan.nextLine();
                if (a.check(code) == true) {
                    System.out.println("logged in");
                    userFound = true;
                    break;
                }
            }
    }

if(userFound) {
    login();
} else {
    System.out.println("User not found.");
}
 类似资料:
  • 我一直在读一本面向初学者的书,“第一头HTML5编程”,其中有这样一段代码: 目前,如果我调用,它将返回下一次显示是在下午5:00。我将循环条件更改为“I<=movie.showtimes.length;”但它仍然只运行一次,并且只显示下午5点。循环只迭代一次,即使我重写了这个函数: 不是应该跑两次吗?

  • iv得到了一个检查两个数组中的值的循环。如果找到匹配的值,这些值将被打印到控制台。 我还包含了一个 print 语句,该语句旨在仅在未在任何地方找到匹配项时才打印。 此时,如果传入的数组包含一些匹配的数字和一些不匹配的数字,我仍然会得到没有找到匹配的消息。相反,我希望只有在任何地方都不存在匹配时,才打印“找不到匹配”消息。 我认为这应该是一个简单的更正,但我看不出我哪里出错了。 建议不胜感激。

  • 问题内容: 该脚本未遍历“模块”数组的所有值。 这是运行的结果。该数组显示4个元素,但是.each黑色中的代码仅执行一次。 正在运行:打印消息[Module @ 71f09325,Module @ e1ddb41,Module @ 7069a674,Module @ 1f68f952]正在 运行:打印消息模块名称::::: puppetlabs-ntp正在 运行:打印消息安装非自定义正在 运行:工

  • 在我的部分代码中,循环中有一个语句,它应该在每次迭代时都请求输入。然而,它只要求输入一次,当循环再次运行时不会再次要求输入,就好像已经输入了一些内容一样。这真的很烦人,因为似乎没有什么问题。

  • 我试图实现每秒循环一次的ScheduledExecutorService线程,但现在它只循环一次。 我的问题是如何设置它,使它周期性地循环,而不是一次迭代? 另外,如何将连接池传递给线程,以便每次迭代都可以查询数据库?任何帮助都非常感谢。

  • if语句 (实际上是if表达式) OCaml有两种if语句: if boolean-condition then expression if boolean-condition then expression else other-expression 不同于传统的语言,if语句是表达式。它们更类似于C类语言中的三元操作符?: 而不是你所熟悉的if语句。 下面是if语句的简单例子: # le