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

发布于 2022-09-02 09:48:53 字数 1887 浏览 15 评论 0

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

乞讨 2022-09-09 09:48:53
  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));

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文