0

文字列の16進値を整数値に解析する必要があります。このような:

String hex = "2A"; //The answer is 42  
int intValue = Integer.parseInt(hex, 16);

しかし、間違った16進値(たとえば「LL」)を挿入すると、java.lang.NumberFormatException: For input string: "LL"どうすればそれを回避できるか(たとえば、0を返す)が得られますか?

4

5 に答える 5

1

trycatchブロックで囲みます。これが例外処理の仕組みです。-

int intValue = 0;
try {
    intValue = Integer.parseInt(hex, 16);
} catch (NumberFormatException e) {
    System.out.println("Invalid Hex Value");
    // intValue will contain 0 only from the default value assignment.
}
于 2012-11-20T21:53:18.677 に答える
1

入力文字列の場合: "LL"どうすれば回避できますか(たとえば、0を返します)?

例外をキャッチし、intvalueにゼロを割り当てるだけです

int intValue;
try {
String hex = "2A"; //The answer is 42  
intValue = Integer.parseInt(hex, 16);
}
catch(NumberFormatException ex){
  System.out.println("Wrong Input"); // just to be more expressive
 invalue=0;
}
于 2012-11-20T21:53:19.373 に答える
1

例外をキャッチして、代わりにゼロを返すことができます。

public static int parseHexInt(String hex) {
    try {
        return Integer.parseInt(hex, 16);
    } catch (NumberFormatException e) {
        return 0;
    }
}

ただし、0 も有効な 16 進数であり、 などの無効な入力を意味しないため、アプローチを再評価することをお勧めします"LL"

于 2012-11-20T21:54:39.990 に答える
0

どうすれば回避できますか (たとえば、0 を返す)

万一return 0の場合の簡単な方法でNumberFormatException

public int getHexValue(String hex){

    int result = 0;

    try {
        result = Integer.parseInt(hex, 16);
     } catch (NumberFormatException e) {
        e.printStackTrace();
    }
    return result;
}
于 2012-11-20T21:54:55.070 に答える
0

例外をキャッチしてデフォルト値を設定するだけです。ただし、tryブロックの外側で変数を宣言する必要があります。

int intValue;
try {
    intValue = Integer.parseInt(hex, 16);
} catch (NumberFormatException e) {
    intValue = 0;
}

初期化式 (変数など) を使用して値を設定する必要がある場合はfinal、ロジックをメソッドにパッケージ化する必要があります。

public int parseHex(String hex) {
    try {
        return Integer.parseInt(hex, 16);
    } catch (NumberFormatException e) {
        return 0;
    }
}

// elsewhere...
final int intValue = parseHex(hex);
于 2012-11-20T21:55:04.097 に答える