我是学生,我决定在UVa Online Judge尝试一些问题集,以帮助提高我的技能。在第一个问题上,我遇到了一堵砖墙。在打击编译器错误之后(我最终发现了一些在他们的论坛中提交Java代码的模糊指南),我现在已经毕业于“错误答案”状态。
为了达到目的 - 如果我没有用try / catch包围这个while循环,它会在调用{{1}时在输入字符NumberFormatException
上运行时生成""
}}。这是有道理的,除非输入是Integer.parseInt()
然后它是""
并且不应该进入循环。
我尝试删除null
并使用split(" ")
,但这会产生错误的索引异常。
程序运行正常,直到我按Enter键结束输入。那是错误产生的时候。如果我用try / catch包围循环,那么没有错误,但是控制台似乎会抛出额外的换行符,我相信这是我“错误答案”状态的来源。
我做错了什么?
StringTokenizer
答案 0 :(得分:5)
目前还不清楚为什么当输入空行时,您希望kb.nextLine()
返回null
。您应该与""
进行比较,而不是null
。
在致电kb.hasNextLine()
之前,您还应该检查kb.nextLine()
。
public static void main(String[] args){
Scanner kb = new Scanner(System.in);
String[] temp;
int i, j;
while (kb.hasNextLine()) {
String input = kb.nextLine();
if (input.equals("")) break;
temp = input.split(" ");
i = Integer.parseInt(temp[0]);
j = Integer.parseInt(temp[1]);
solve(i, j);
}
}
答案 1 :(得分:0)
有下一行,所以它不会返回null
,只是该行为空,因此""
。