4

私がこれをやろうとすると:

total = Integer.parseInt(dataValues_fluid[i]) + total;

エラーメッセージが表示されます

java.lang.NumberFormatException: For input string: " "

一部の値は " " です。それが私に与える理由です。しかし、私は試しました

int total = 0;
for(int i=0; i<counter5; i++){

if(dataValues_fluid[i]==" "){dataValues_fluid[i]="0";}

total = Integer.parseInt(dataValues_fluid[i]) + total;
}

それでも同じjava.lang.NumberFormatExceptionエラーが発生します。

4

6 に答える 6

7

私はそれが s のdataValues_fluid[]配列であると仮定していStringます。この場合、==比較演算子は使用できません。使用する必要がありますif(dataValues_fluid[i].equals(" "))

したがって、あなたparseInt()はスペース文字を解析しようとしています。その結果、NumberFormatException.

于 2011-03-31T22:37:06.493 に答える
1

を使用==して文字列を と比較するの" "ではなく、次のようにします。

if (" ".equals(dataValues_fluid[i]) { dataValues_fluid[i] = "0"; }

==文字列を使用する場合と文字列を使用する場合の違いに注意してください.equals()==Java で文字列を比較する場合は機能しません.equals()。メソッドを使用する必要があります。

http://leepoint.net/notes-java/data/expressions/22compareobjects.html

于 2011-03-31T22:37:13.950 に答える
1

次を使用して文字列を比較する必要がありますequals

if(dataValues_fluid[i].equals(" ")){dataValues_fluid[i]="0";}

ただし、一般的には、NumberFormatException をキャッチし、その場合は値を 0 に設定するのがより洗練された方法です。

于 2011-03-31T22:37:23.390 に答える
1

あなたの目的には Andy White のリンクで十分だと思いますが、"==" 演算子が機能しない理由と代替手段 (実際にはいくつかあります) について別の詳細な説明が必要な場合は、次のリンクを確認してください: http:// www.devdaily.com/java/edu/qanda/pjqa00001.shtml

他の同等のメソッドに関する API ドキュメント情報は次のとおりです

于 2011-04-01T00:44:19.397 に答える
0

合計に加算される行を try/catch ブロックでラップすることができるため、無効な数値は無視されます (通知が必要な場合は、エラーをログに記録できます)。

try {
    total += Integer.parseInt(dataValues_fluid[i]);
} catch (NumberFormatException ignored) {}

このようにして、スペースだけでなく、数値以外の値をすべて無視し、プログラムが適切に実行されます (安全のために、その例外をログに記録するか、発生時にダブルチェックを実行してください)。

無効な数値の場合、合計には何も追加されないため、プログラムは期待どおりに実行されます。

于 2011-03-31T22:43:47.823 に答える