0
case 4: if(studentInfo.isEmpty())
        {
            System.out.println("No student record exists!");
        }
        else
        {
            System.out.println("Enter the name of the student you want to search for: ")
                    searchName = sc2.next();

                    for(Student stu : studentInfo)
                    {
                       if(stu.getName().equalsIgnoreCase(searchName))
                        {
                           System.out.println("Match found: "+stu);

                        }
                        else 
                        {
                            System.out.println("No match found for the given name!");
                        }
                        break;
                     }
        }
        break;

これは、ユーザーから名前となる文字列を取得し、リストにその名前が含まれているかどうかを検索する私のケース ブロックです (最初は前のケース ブロックにレコードが追加されます)。ユーザーが指定した名前と一致するすべての名前を表示したいと思います。例: リストに John という名前のレコードが 2 つある場合、両方のレコードを表示したいと考えています。上記のコードで何を変更する必要があるか教えてもらえますか? 前もって感謝します!

4

3 に答える 3

2

このためには、リスト全体を反復処理する必要があります。ループbreak;内からステートメントを削除する必要があります。forこのbreakステートメントを使用すると、指定されたstudent nameに一致するたびに、for ループが中断されます。リストの残りを検索していません。

于 2013-09-13T07:08:28.907 に答える
0
      StringBuilder result = new StringBuilder();
       for(Student stu : studentInfo)
       {        
         if(stu.getName().equalsIgnoreCase(searchName))
             result = result.append(stu.getName()+ " ");  
        }
       System.out.println(result.toString());
于 2013-09-13T07:09:40.970 に答える