私のコードを実行している間、私はNumberFormatException
を取得しています。
Java.lang.NumberFormatException: For input string: "N/A"
at Java.lang.NumberFormatException.forInputString(Unknown Source)
at Java.lang.Integer.parseInt(Unknown Source)
at Java.lang.Integer.valueOf(Unknown Source)
at Java.util.TreeMap.compare(Unknown Source)
at Java.util.TreeMap.put(Unknown Source)
at Java.util.TreeSet.add(Unknown Source)`
この例外が発生しないようにするにはどうすればよいですか。
"N/A"
は整数ではありません。整数にパースしようとするとNumberFormatException
を投げなければなりません。
解析する前に確認してください。またはException
を適切に処理します。
try{ int i = Integer.parseInt(input); }catch(NumberFormatException ex){ // handle your exception ... }
または - 整数パターンマッチング -
String input=...;
String pattern ="-?\\d+";
if(input.matches("-?\\d+")){ // any positive or negetive integer or not!
...
}
明らかにN/A
をint
の値に解析することはできません。あなたはそのNumberFormatException
を処理するために次のようなことをすることができます。
String str="N/A";
try {
int val=Integer.parseInt(str);
}catch (NumberFormatException e){
System.out.println("not a number");
}
このような例外ハンドラを作ります。
private int ConvertIntoNumeric(String xVal)
{
try
{
return Integer.parseInt(xVal);
}
catch(Exception ex)
{
return 0;
}
}
.
.
.
.
int xTest = ConvertIntoNumeric("N/A"); //Will return 0
Integer.parseInt(str) は、文字列が解析可能な整数を含まない場合はNumberFormatException
をスローします。あなたは以下と同じように笑うことができます。
int a;
String str = "N/A";
try {
a = Integer.parseInt(str);
} catch (NumberFormatException nfe) {
// Handle the condition when str is not a number.
}
"N/A"は文字列であり、数値に変換することはできません。例外をキャッチして処理します。例えば:
String text = "N/A";
int intVal = 0;
try {
intVal = Integer.parseInt(text);
} catch (NumberFormatException e) {
//Log it if needed
intVal = //default fallback value;
}