为了账号安全,请及时绑定邮箱和手机立即绑定

比较循环中 ArrayList 的元素会产生意外结果?

比较循环中 ArrayList 的元素会产生意外结果?

侃侃无极 2021-09-03 13:26:05
以下代码仅检查 ArrayList 中的第一项。当我输入一个位于 ArrayList 但不在第一个位置的项目时,我收到错误消息“请输入有效名称”。我怎样才能解决这个问题?谢谢!这是我的代码:   private ArrayList<Account> accounts = new ArrayList<>();   for(Account a : accounts)    {        while(true)        {            System.out.printf("Customer name: ");            String customerName = scanner.next();            if(customerName.equals(a.getName()))            {                System.out.println("You entered " + a.getName());                break;            }            else            {                System.out.println("Please enter a valid name");            }        }    }   
查看完整描述

3 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

内部循环这样做:

while(true) {

在这里没有任何目的。它只是在外循环不断循环,因此总是与同一个a帐户进行比较!

基本上你必须交换两个循环!


查看完整回答
反对 回复 2021-09-03
?
PIPIONE

TA贡献1829条经验 获得超9个赞

你必须暂时休息。当您在列表上迭代时,您必须考虑逻辑。它可以像这样的代码;


ArrayList<Account> accounts = new ArrayList<>();

boolean isMatched = false;


while (true) {

    for (Account account : accounts) {

        System.out.printf("Customer name: ");

        String customerName = scanner.next();

        if (customerName.equals(account.getName())) {

            isMatched = true;

            break;

        }

    }

    if (isMatched) {

        System.out.println("You entered " + account.getName());

        break;

    }

    System.out.println("Please enter a valid name");

}

PS: boolean找到结束while循环的客户名称时的值。


查看完整回答
反对 回复 2021-09-03
  • 3 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信