90

私のコードを実行している間、私は取得してい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)`

この例外の発生を防ぐにはどうすればよいですか?

4

5 に答える 5

108

"N/A"は整数ではありません。NumberFormatException整数に解析しようとすると、スローする必要があります。

解析する前に確認するか、Exception適切に処理してください。

  1. 例外処理

    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!
 ...
}
于 2013-09-10T06:19:46.870 に答える
8

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.
}
于 2013-09-10T06:23:38.223 に答える
8

このような例外ハンドラを作成し、

private int ConvertIntoNumeric(String xVal)
{
 try
  { 
     return Integer.parseInt(xVal);
  }
 catch(Exception ex) 
  {
     return 0; 
  }
}

.
.
.
.

int xTest = ConvertIntoNumeric("N/A");  //Will return 0
于 2013-09-10T06:25:18.057 に答える
6

N/A明らかに、値に解析することはできませんint。それを処理するには、次のようなことができますNumberFormatException

   String str="N/A";
   try {
        int val=Integer.parseInt(str);
   }catch (NumberFormatException e){
       System.out.println("not a number"); 
   } 
于 2013-09-10T06:22:17.127 に答える
4

「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;
    }
于 2013-09-10T06:21:53.797 に答える