-4

私は得る:java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

使用しようとすると:

Integer.parseInt("h");

また

Integer.parseInt("h".toString());

atoiしかし、私はそれがcのように機能することを期待していました.

ここで何が間違っていますか?

4

3 に答える 3

3

リテラル "h"はString明らかに有効な整数を表していません。

hが変数であると仮定すると、String引用符を使用する必要はありません。

String h = "1234";
Integer.parseInt(h);

更新: 関数atoiは入力引数の整数値を返し、入力値が有効でない場合はゼロを返します。Java では、次のように記述できます。

public static int javaAToI(String text) {
   try {
      return Integer.parseInt(text);
   } catch (NumberFormatException e) {
      return 0;
   }
}
于 2013-01-24T13:28:27.493 に答える
0

Javaは、ここで想定されていることを正確に実行しています。でatoi0 が返された場合、文字列に 0 が含まれているかどうか、または解析できない文字列が含まれているかどうかをどのように判断しますか? Java は、解析可能な値を含まない文字列を解析しようとしたことを知らせることでこれを処理します...理想的には、戻って解析できない値を渡しているコードを修正できるようにします。

あなたの場合、C とまったく同じように状況を処理したい場合は、NumberFormatException をキャッチすると 0 を返すことができます。(戻って、間違った文字列を渡していないことを確認できれば、おそらくより良いでしょうが、それが常に可能であるとは限りません。)

于 2013-01-24T13:55:08.120 に答える