此段代码字符串转换成整型时为何出错。

墨染白筝
  • 147
    以下代码是一个十六进制转十进制。我的想法是十六进制转二进制转十进制。但是在二进制转十进制的过程中出现了问题,提示数据格式异常。
请问是何种原因,如何解决?

import java.util.Scanner;

public class Sixteen_Ten {
    public static void main(String[] args)throws Exception{
        Scanner in = new Scanner(System.in);
        String s = in.next();
        String[] arr = new String[s.length()];
        for(int i = 0;i<s.length();i++){
            arr[i]=s.substring(i,i+1);
        }
        for(int i = 0;i<arr.length;i++){
            switch(arr[i]){
            case "0":
                arr[i]="0000";
            case "1":
                arr[i]="0001";
            case "2":
                arr[i]="0010";
            case "3":
                arr[i]="0011";
            case "4":
                arr[i]="0100";
            case "5":
                arr[i]="0101";
            case "6":
                arr[i]="0110";
            case "7":
                arr[i]="0111";
            case "8":
                arr[i]="1000";
            case "9":
                arr[i]="1001";
            case "A":
                arr[i]="1010";
            case "B":
                arr[i]="1011";
            case "C":
                arr[i]="1100";
            case "D":
                arr[i]="1101";
            case "E":
                arr[i]="1110";
            case "F":
                arr[i]="1111";
                break;
            }
        }
        String er = "";
        double num = 0;
        for(int i = 0;i<arr.length;i++){
            er = er + arr[i];
        }
        String[] arr1 = new String[er.length()];
        int[] arr2 = new int[er.length()];
        for(int i = 0;i<er.length();i++){
            arr1[i]=s.substring(i,i+1);
            arr2[i]=Integer.valueOf(arr1[i]).intValue();//在此处发生错误
             num = num + Math.pow((double)arr2[i], i);
        }
        System.out.print((int)num);
    }
}
回复
阅读 2.2k
1 个回答
  1. 每个case语句里都要加上break

  2. arr1[i]=s.substring(i,i+1); ==> arr1[i]=er.substring(i,i+1);

  3. num = num + Math.pow((double)arr2[i], i); ==> num = num + (arr2[i] == 0 ? 0 : Math.pow(2, er.length() - i - 1));

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏