javaでScannerを使って文字列を受け取り、値を1文字ずつ検証したいのですが上手く行きません。(永遠にループしてしまいます。)
以下のようなソースコードなんですが流れは
①ScannerでString型を受け取りstrに代入する。
②strを1文字ずつに分け、Mapの中にその文字があるか検証
③入力された文字(str)がMapの中になければ(1文字でも不正な文字が含まれていたら)再入力
④指定された文字を入力するまでループ
のようにしたいのです。
String str = null;
Scanner scanner = new Scanner(System.in);
str = scanner.nextLine();
for(String s :str.split("")){
while(!map.containsKey(s)){
System.out.println("不正な入力");
str = scanner.nextLine();
}
}
scanner.close();
しかし、上記のようにすると不正な文字が入力されたあと、指示通り(Mapに含まれる文字)を入力しても永遠にループされてしまいます。
なぜそのようになってしまうのでしょうか!?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/25 02:35