A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mortonnnn 中级黑马   /  2015-7-22 23:34  /  513 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并
对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。提示:十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,接着再用得到的商作为被除
数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),
就很容易理解十进制数转二进制数的这种方式。


/**思路:
*要得到十进制数的二进制表现,算法必须要知道
*然后要注意编码习惯:即要讨论数值情况
*/

class Program
{        public static void main(String[] args){
                //利用scanner封装键盘
                Scanner scanner = new Scanner(System.in);
                String str = "";
                int i ;
                //接收键盘输入
                str  = scanner.nextLine();
                //讨论
                if(isNumber(str)){
                        i = Integer.parseInt(str);
                }else {
                        System.out.println("您输入的不正确,请重新输入");
                }
                String rezult  = toBinary(i);
                scanner.close();
        }
        public String toBinary(int i) {
                //获取一个Stringbuilder
                StringBuilder sb  = new StringBuilder();
                //运用while循环来算
                while( i == 0 ){
                        int a = i % 2;
                        int i = i / 2;

                        sb.append(a);
                }
                sb.reverse();
                return sb.toString();
        }       

}

4 个回复

倒序浏览
不明觉厉
回复 使用道具 举报
看看,懂了。
回复 使用道具 举报
蔡锐 来自手机 中级黑马 2015-7-23 05:33:48
板凳
思路和楼主写的代码差不多呢,java本来就提供了进制转换,用它提供的方法就好
回复 使用道具 举报
本帖最后由 新手ing 于 2015-7-23 08:44 编辑

右移,效率会比较高
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马