猿问

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

以下代码仅检查 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");

            }

        }

    }   


侃侃无极
浏览 132回答 3
3回答

隔江千里

内部循环这样做:while(true)&nbsp;{在这里没有任何目的。它只是在外循环内不断循环,因此总是与同一个a帐户进行比较!基本上你必须交换两个循环!

PIPIONE

你必须暂时休息。当您在列表上迭代时,您必须考虑逻辑。它可以像这样的代码;ArrayList<Account> accounts = new ArrayList<>();boolean isMatched = false;while (true) {&nbsp; &nbsp; for (Account account : accounts) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.printf("Customer name: ");&nbsp; &nbsp; &nbsp; &nbsp; String customerName = scanner.next();&nbsp; &nbsp; &nbsp; &nbsp; if (customerName.equals(account.getName())) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isMatched = true;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; if (isMatched) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("You entered " + account.getName());&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; }&nbsp; &nbsp; System.out.println("Please enter a valid name");}PS: boolean找到结束while循环的客户名称时的值。
随时随地看视频慕课网APP

相关分类

Java
我要回答