黑马程序员技术交流社区

标题: 关于十进制转换为二进制本人写的底层代码,以供参考! [打印本页]

作者: 15820030540    时间: 2016-7-4 00:51
标题: 关于十进制转换为二进制本人写的底层代码,以供参考!
类名可以随便改,写的不好 勿喷! 如果能赏点黑马币 哈哈 完美!
public class Test8 {
        static ArrayList<Integer> al = new ArrayList<>();                  //该集合记录除以2的余数
        public static void main(String[] args) {
                print();
        }
        public static void print(){
                Scanner sc = new Scanner(System.in);
                int num = 0;
                while(true){                       
                        System.out.println("请输入一个数字的字符串,然后我们会把它转换为十进制整数:");
                        String str = sc.nextLine();
                        try {
                                num = Integer.parseInt(str);
                                break;
                        } catch (Exception e) {
                                try {
                                        new BigInteger(str);
                                        System.out.println("您录入的位数太多,请重新录入:");
                                } catch (Exception e2) {
                                        try {
                                                new BigDecimal(str);
                                                System.out.println("你您录入的是一个小数,请重新录入:");
                                        } catch (Exception e3) {
                                                System.out.println("错误,您录入的是非法字符!请重新录入:");
                                        }
                                }
                        }
                }
                if(num != 0){
                        change2(num);
                        fList();
                        System.out.print("转换为二进制为:");
                        for(int n : al){
                                System.out.print(n);
                        }
                }
        }
       
        public static void change2(int n){
                if(n==1||n==0){
                        al.add(n);
                }else{
                        al.add(n%2);
                        change2(n/2);
                }       
        }
        //集合取反
        public static void fList(){
                int temp;
                for(int i=0;i<al.size()/2;i++){
                        temp = al.get(i);
                        al.set(i, al.get(al.size()-i-1));
                        al.set(al.size()-i-1, temp);
                }
        }
}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2