我是学生,我决定在UVa Online Judge尝试一些问题集,以帮助提高我的技能.在第一个问题上,我遇到了一堵砖墙.在打击编译器错误之后(我终于找到了一些在他们的论坛中提交Java代码的模糊指南),我现在已经毕业于"错误答案"状态.
为了达到目的 - 如果我没有用try/catch包围这个while循环,它会在调用NumberFormatException时在输入字符串""上生成一个运行时Integer.parseInt().这是有道理的,除非输入是,""它null不应该进入循环.
我试过摆脱split(" ")并使用a 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);
}
}
Run Code Online (Sandbox Code Playgroud)
目前还不清楚为什么在输入空行时你会期望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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6509 次 |
| 最近记录: |