0

私はこれに対する答えを探していましたが、これを修正した人をまだ見つけることができませんでした. 配列にデータを入力しようとしていますが、特定の値よりも大きくなるかどうかを確認してください。ただし、これを実行すると、スレッド "main" java.lang.NumberFormatException: For input string: "" Error で例外が発生します。そのコードは次のとおりです。

    public void setReadData() throws NoSuchElementException {
    try {

        for (int i = 0; i < getRows(); i++) {
            String numbers = p.nextLine();
            String[] inputs = numbers.split(" ");
            if (inputs.length > getCols()) {
                System.out.println("There are more columns than the size specified!\n");
                System.exit(1);
            }
            for (int j = 0; j < getCols(); j++) {
                int data = Integer.parseInt(inputs[j]);
                this.setData(i,j,data);
            }
        }

エラーコードは次のとおりです。

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:504)
at java.lang.Integer.parseInt(Integer.java:527)
at foo.Bar.setReadData(Matrix.java:49)
at foo.Bar.main(Matrix.java:226)

どんな助けでも大歓迎です!

- - 編集 - -

明確にするために、機能していた古いコードは次のとおりです。

for (int i = 0; i < getRows(); i++) {
            p.nextLine();
            for (int j = 0; j < getCols(); j++) {
                this.setData(i,j,p.nextInt()); 
            }

        }

ただし、行全体がチェックされているというチェックはありません。

4

4 に答える 4

0

入力された行に 2 つの連続するスペース文字が含まれている場合、要素が空白の場合、スペース文字で分割すると 1 つになり、エラーが説明されます。

複数のスペースを 1 つの区切りとして扱うには、次のようにします。

String[] inputs = numbers.split(" +");

分割正規表現にプラス記号を追加すると、数字の間に余分なスペースが消費されます。

于 2013-10-07T20:36:38.693 に答える
0

これを試して:

for (int j = 0; j < getCols(); j++) {
    if(!inputs[j].equals("")){
        int data = Integer.parseInt(inputs[j]);
        this.setData(i,j,data);
    }
}
于 2013-10-07T19:48:48.473 に答える