-1

以下のコードでは、lName 配列で姓を検索しています。配列で姓が見つからない場合、ループを回って見つからないたびに else の出力が表示されます。これを解決するにはどうすればよいですか? else 部分に return false ステートメントを追加すると、配列の最初の位置を確認した後にループが停止します。

どんな助けでも感謝します!

public boolean search(String StudentlName)
{ 
    boolean found = true;   // set flag to true to begin first pass

    while ( found ==true )
    {
        for (int index = 0; index<lName.length; index ++)
        {
            if (StudentlName.equalsIgnoreCase(lName[index])  )
            {
                System.out.println(course+"\n"+
                "Student ID = \t"+index+"\n"+ 
                unitTitle + "\n" +
                fName[index] + "\n"  + 
                lName[index] + "\n" + 
                Marks[index] + "\n" + "\n" );
                found = false;

                return true;//Stops The Loop once Found used to stop infinite loop
            }
            else
            {
                System.out.println("Student Not Found");
            }
        }
        return false;
    }
    return true;  
}

結果が見つからない場合は、出力が表示されます

生徒が見つかり

ません生徒が見つかり

ません 生徒が見つかりません 生徒が見つかりません

生徒が見つかり

ません

4

3 に答える 3

4

false を返す直前に、ループの外側で "Student not found" を出力します。false を返すのは 1 回だけで、それまでに学生が見つからなかったことがわかります。「その他」は必要ありません。

于 2012-12-10T17:37:32.063 に答える
0
public boolean search(String StudentlName)
{ 
    boolean found = true;   // set flag to true to begin first pass

    while ( found ==true )
    {
    for (int index = 0; index<lName.length; index ++)
    {
        if (StudentlName.equalsIgnoreCase(lName[index])  )
        {
            System.out.println(course+"\n"+
            "Student ID = \t"+index+"\n"+ 
            unitTitle + "\n" +
            fName[index] + "\n"  + 
            lName[index] + "\n" + 
            Marks[index] + "\n" + "\n" );
            found = false;

            return true;//Stops The Loop once Found used to stop infinite loop
        }


    }
    System.out.println("Student Not Found");
    return false;
    }
return true;  
}

検索したい名前を見逃すたびに他の部分が実行されるので、これはあなたのために働きます。

于 2012-12-10T17:42:42.063 に答える
0

簡単に言うと、while ループが何の役にも立たないことは確かです。最初の反復で常に返されるため、不要です。そのため、found と while ループを削除すると、残りの部分が残ります。

public boolean search(String StudentlName)
{ 
    for (int index = 0; index<lName.length; index ++)
    {
        if (StudentlName.equalsIgnoreCase(lName[index])  )
        {
            System.out.println(course+"\n"+
                 "Student ID = \t"+index+"\n"+ 
                 unitTitle + "\n" +
                 fName[index] + "\n"  + 
                 lName[index] + "\n" + 
                 Marks[index] + "\n" + "\n" );
            return true;//Stops The Loop once Found
        }
        //Don't do anything when they aren't equal, except test the next one
    }
    //We checked everything, found nothing, So now print the message.
    System.out.println("Student Not Found");
    return false;
}
于 2012-12-10T17:45:25.573 に答える