3 回答

TA貢獻(xiàn)1946條經(jīng)驗 獲得超3個贊
在這里你正在檢查 sc.hasNext() 并且它會打印“hasNext returns false”但是在這之后你再次得到 nextInt() 它不會在那里因為在在線編譯器中你無法在運行時傳遞參數(shù)。
嘗試這個,
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
if(!sc.hasNext()){
System.out.println("hasNext returns false");
} else {
int k=sc.nextInt();
System.out.println(k);
}
}

TA貢獻(xiàn)1998條經(jīng)驗 獲得超6個贊
也許您應(yīng)該使用靜態(tài)方法,例如:
nextInt(); nextLine(); nextDouble(); nextBoolean();

TA貢獻(xiàn)1856條經(jīng)驗 獲得超17個贊
我認(rèn)為如果您正在使用一些在線編譯器,您手頭就沒有標(biāo)準(zhǔn)輸入流。只需像這樣模擬您的輸入:
Scanner sc = new Scanner("42");
盡管您檢查過hasNext()
返回 false,但您仍在嘗試讀取導(dǎo)致異常的下一個 int。上面有一段代碼注釋java.util.Scanner.throwFor()
似乎證實了這一點:
// If we are at the end of input then NoSuchElement; // If there is still input left then InputMismatch
添加回答
舉報