私の学校にすべての部屋番号のテキストファイルがあります。次に、学生のクラスの部屋番号を尋ねるコードがあります。 kbはユーザ入力スキャナ、roomnosはテキストファイルスキャナです。これはコードです:Javaのテキストファイルを使用したユーザー入力のエラーチェック
String room = null;
boolean invalid = true;
while(invalid)
{
System.out.println("What is the room number of your class?");
room = kb.nextLine();
while(roomnos.hasNext())
{
String roomno = roomnos.nextLine();
if(room.equals(roomno))
invalid = false;
}
if(invalid == true)
{
System.out.println("The room number you've given is invalid.");
}
}
、ユーザによって与えられた最初の部屋番号が有効であれば、コードは動作します。しかし、ユーザーが無効な部屋番号を入力した場合、ループは停止しません。すなわち、部屋番号が無効であり、部屋番号が有効であっても何度も何度も部屋番号を尋ねます。私が考えているのは、入れ子のwhileループのhasNext()が再起動せず、ファイルの先頭に戻るため、より大きなwhileループの次のループ中に部屋番号を検索できないということです。問題が何であれ、どうすれば修正できますか?
申し訳ありません。チェックでは、ブール値「無効」をチェックし、部屋番号が無効であることを印刷するifステートメントを意味しますか?なぜなら、ループが内側のループの外側にあるべきだと思っていたので、ループがテキストファイルの各行を通過してから、部屋番号が無効かどうかを調べることができます。また、正確にどこにブレークを入れますか?内側は内側にありループは十分ですか? – Ranjani