write:2022-3-18

其中一种原因:

在进行进制转换时,用了Integer.parseInt(),Integer.valueOf().toString(),Integer.toString()其中之一的方法进行转换确进行报错:Exception in thread “main” java.lang.NumberFormatException: For input string: “XXXX”",这是因为使用以上3中方法需要注意去掉需要转换的数字的进制标志位

举例说明:

//输入一个十六进制数a,和一个八进制数b,输出a和b的十进制。
        //错误代码:
    String s = new Scanner(System.in).nextLine();
    String[] nums = s.split(" ");
    System.out.println(Integer.parseInt(nums[0],16));   //直接进行转换
    System.out.println(Integer.parseInt(nums[1],8));

结果:
在这里插入图片描述

//正确代码:
String s = new Scanner(System.in).nextLine();
String[] a = s.split(" ");
int c = Integer.parseInt(a[0].substring(2,a[0].length()),16);     //去掉标志位再进行转换
int d = Integer.parseInt(a[1].substring(1,a[1].length()),8);
int e = c+d;
System.out.println(c+"\n"+d);

结果:
在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐