スキャナが特定の行数を読み取る必要があるプログラムを実行していましたが、その数に達すると停止しませんでした。特定の行の後にスキャナを停止する方法
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;
}
ノーマル-1それが読み取る必要がある行の数がされ、かつcreateaarrayはそれがそれらの間にスペースが2つの数値をとる方法であり、そしてそれらを置く:ここでは、この部分を担当するコードですアレイ。だから、xは最初の数字になり、yは2番目になります。しかし、スキャナは "普通の"数の行を読んだ後に閉じず、それ以上の入力は数値形式の出力を引き起こします。入力とエラーの例:
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)
これは空の入力が原因であると私は理解していますが、修正方法はわかりません。いくつかの助けは、入力が有効でない場合、あなたのcreateaarray
方法を想定し
「ans」を空にします。 'ans.isEmpty()' ?? – Andreas
はコード全体を表示します。 – nhouser9
から[StringUtils#isNumeric](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#isNumeric-java.lang.CharSequence-)を使用できますApacheライブラリ。 –