我正在做一个程序,要求扫描仪读取一定数量的行,但是,在达到该数字后它不会停止。这是处理这部分的代码:
for(int i=0;i<normal;i++)
{
int x=0;
int y=0;
String ans=in.nextLine();
int[] arraya=createaarray(ans);
x=arraya[0];
y=arraya[1];
matrix[x][y]=true;
}
Normal-1是它需要读取的行数,而createaarray是一种方法,它需要两个数字,它们之间有空格,并将它们放在一个数组中。因此x将是第一个数字,而y是第二个数字。但是,在读取“正常”行数后,扫描程序将不会关闭,并且任何输入都将导致数字格式化。示例输入和错误:
0 1
0 2
2 3
4 3
6 1
1 5
7 3
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at treez.createaarray(treez.java:83)
at treez.run(treez.java:45)
at treez.<init>(treez.java:8)
at treez.main(treez.java:90)
我知道这是由空输入引起的,但是,我不知道如何修复它。一些帮助将不胜感激
答案 0 :(得分:0)
如果输入无效,假设您的createaarray
方法返回empty
或null
数组,则需要在执行其余代码之前添加if
条件,以使确定你有一个有效的array
,例如:
if(null != arraya && arraya.length > 1){
x=arraya[0];
y=arraya[1];
matrix[x][y]=true;
}
此外,一旦完成,您可以通过调用scanner
方法关闭close()
。
答案 1 :(得分:0)
如果“normal - 1”是要读取的行数,则应该循环“正常 - 1”次。在你的代码中,我看到你从0开始并以“normal”结束。数组完全“正常”迭代。应该这样做:
for(int i=0 ; i < normal - 1; i++) {
int x = 0;
int y = 0;
String ans = in.nextLine();
int[] arraya = createaarray(ans);
x = arraya[0];
y = arraya[1];
matrix[x][y] = true;
}