この問題は私には面倒です。私はループの中から呼び出されるメソッドを書いた。最初は完全に動作し、その後はちょうどハングアップします。 Java System.in hasNextメソッドは初めて呼び出されたときにのみ動作します
この
はメソッドである:それは情報を取得するのにかかるようpublic static String promptUser(){
String path = "";
Scanner reader = new Scanner(System.in);
while (!path.contains(ROOT_FOLDER)){
System.out.println(String.format("Please paste in the directory path from WinSCP, including %s: ", ROOT_FOLDER));
while (true) {
if (reader.hasNext()){
path = reader.nextLine();
break;
}
}
}
reader.close();
return path;
}
そして、これがループ
while (true) {
try {
listFiles(promptUser());
break;
}
catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
}
私はそれを初めて実行され、それが何回ユーザーにプロンプトが表示されます必要(ディレクトリパス)。その後、FTPサーバーにその要求を送信し、そのパスが存在しない場合は、引き続きユーザーにプロンプトを表示します。それだけでハングアップラウンドしかし、私のデバッガは、第二の外出先で私に言っている:
は if (reader.hasNext()){
キーを入力して打つのいかなる量は、それが継続して得ません。 promptUserの最初の呼び出しで、私はルートフォルダなしで何かを入力することができました。そして、それはルートフォルダを取得するまで尋ね続けます。それでなぜ2回目の呼び出しでそれをしないのですか?
何が起こっているのですか?
ありがとうございます、これは私の問題を解決し、あなたは問題を私が主題で見つけた他の質問よりもずっとよく説明しました。しかし、ある時点でスキャナを閉じる必要がありますか? Eclipseは私がすべきことを警告します。 – clickcell