我是一名學生,我決定嘗試一下UVA Online Judge的一些問題集以幫助提高我的技能。第一個問題我碰到了一堵磚牆。在對付編譯器錯誤(我最後發現了一些在他們的論壇中提交Java代碼的模糊指導)之後,我現在已經畢業於「錯誤答案」狀態。Scanner.nextLine()不返回null?
要到一點 - 如果我不與周圍一個try/catch這個while循環,它在調用Integer.parseInt()
輸入字符串""
在運行時生成NumberFormatException
。這是有道理的,除非輸入是""
那麼它是null
並且不應該進入循環。
我試過擺脫split(" ")
並使用StringTokenizer
,但這會產生錯誤的索引異常。
該程序工作正常,直到我通過按Enter鍵結束輸入。那是錯誤產生的時候。如果我用try/catch包圍循環,沒有錯誤,但控制檯似乎會拋出額外的換行符,並且我認爲這是我的「錯誤答案」狀態的來源。
我在做什麼錯?
public static void main(String[] args){
Scanner kb = new Scanner(System.in);
String input;
String[] temp;
int i, j;
while((input = kb.nextLine()) != null){
temp = input.split(" ");
i = Integer.parseInt(temp[0]);
j = Integer.parseInt(temp[1]);
solve(i, j);
}
}
空字符串不是'null' ... – krookedking 2011-04-07 12:55:54
http://stackoverflow.com/questions/4802015/difference-between-null-and-java-string – Ishtar 2011-04-07 13:22:03