开发者社区> 问答> 正文

字符串转换成整型时为何出错?

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

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);
    }
}

展开
收起
蛮大人123 2016-03-11 14:17:01 2969 0
2 条回答
写回答
取消 提交回答
  • 类型不匹配
    2019-07-17 18:59:13
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    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));

    2019-07-17 18:59:13
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载