package sandbox2;
import java.util.Scanner;
public class Sandbox2
{
public static void main(String[] args)
{
for (int i = 0; i < 5; i++)
{
String s = askForProperty("Enter value for " + i + ": ");
System.out.println(i + " is: " + s);
}
}
private static String askForProperty(String message)
{
Scanner keyboard = new Scanner(System.in);
System.out.print(message);
String s = keyboard.nextLine();
keyboard.close();
return s;
}
}
當我運行上面的代碼,它返回第一個響應PERFECTLY。當它試圖索要第二響應,它返回:問題與java掃描程序不採取nextLine新實例
java.util.NoSuchElementException: No line found
爲什麼會返回此錯誤?每次調用askForProperty方法時,Scanner都是一個全新的實例!它與System.in有什麼關係作爲輸入流?
你爲什麼選擇每次迭代創建一個新的掃描儀?我相信問題在於,當你調用'keyboard.close'時,你正在關閉'System.in'。如果你只是製作一臺掃描儀,並在所有迭代完成後關閉它,你應該沒問題。 – csmckelvey
這似乎是合理的。我相信close()方法會關閉資源依賴的其他任何東西。我試圖減少代碼,因爲我需要許多用戶輸入,並且不需要加載println語句。 – Drifter64