java - 此段代码字符串转换成整型时为何出错。
黄舟
黄舟 2017-04-17 17:16:32
[Java讨论组]
    以下代码是一个十六进制转十进制。我的想法是十六进制转二进制转十进制。但是在二进制转十进制的过程中出现了问题,提示数据格式异常。
请问是何种原因,如何解决?

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

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(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));

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号