我写了个16进制转化10进制的程序,如果输入的格式不对就显示异常NumberFormatException,
但是每次显示异常后就既没有结束程序,也没有继续循环下去package ex13;
import java.util.Scanner;public class HexToDecimalConversion {

public static void main(String[] args) {
// TODO 自动生成方法存根
Scanner input=new Scanner(System.in);
boolean continueToInput=false;

do{
try{
//Prompt the user to enter a string
System.out.print("Enter a hex number: ");
String hex=input.nextLine();

System.out.println("The decimal value for hex number "
+hex+" is "+hexToDecimal(hex.toUpperCase()));
continueToInput=false;
}
catch(NumberFormatException ex){
ex.printStackTrace();
continueToInput=true;
}
}while(continueToInput==true);
}

private static int hexToDecimal(String hex){
int decimalValue=0;
for(int i=0;i<hex.length();i++){
char hexChar=hex.charAt(i);
decimalValue=decimalValue*16+hexCharToDecimal(hexChar);
}
return decimalValue;
}

public static int hexCharToDecimal(char ch){
if(ch>='A'&&ch<='F')
return 10+ch-'A';
else if(ch>'0'&&ch<'9')
return ch-'0';
else
throw new NumberFormatException("Invalid number format");
}
}

解决方案 »

  1.   

    跑了一下,异常发生后有继续循环下去:Enter a hex number: 3y
    java.lang.NumberFormatException: Invalid number format
    at HexToDecimalConversion.hexCharToDecimal(HexToDecimalConversion.java:42)
    at HexToDecimalConversion.hexToDecimal(HexToDecimalConversion.java:31)
    at HexToDecimalConversion.main(HexToDecimalConversion.java:17)
    Enter a hex number: 3u
    Enter a hex number: java.lang.NumberFormatException: Invalid number format
    at HexToDecimalConversion.hexCharToDecimal(HexToDecimalConversion.java:42)
    at HexToDecimalConversion.hexToDecimal(HexToDecimalConversion.java:31)
    at HexToDecimalConversion.main(HexToDecimalConversion.java:17)
    3b
    The decimal value for hex number 3b is 59
      

  2.   

    跑了一下,发生异常之后有继续循环下去:
    Enter a hex number: 3y
    java.lang.NumberFormatException: Invalid number format
    at HexToDecimalConversion.hexCharToDecimal(HexToDecimalConversion.java:42)
    at HexToDecimalConversion.hexToDecimal(HexToDecimalConversion.java:31)
    at HexToDecimalConversion.main(HexToDecimalConversion.java:17)
    Enter a hex number: 3u
    Enter a hex number: java.lang.NumberFormatException: Invalid number format
    at HexToDecimalConversion.hexCharToDecimal(HexToDecimalConversion.java:42)
    at HexToDecimalConversion.hexToDecimal(HexToDecimalConversion.java:31)
    at HexToDecimalConversion.main(HexToDecimalConversion.java:17)
    3b
    The decimal value for hex number 3b is 59
      

  3.   

    转化为十进制用Integer.parseInt(hex, 16);