黑马程序员技术交流社区

标题: 今天做的一道题 [打印本页]

作者: mortonnnn    时间: 2015-7-22 23:34
标题: 今天做的一道题
编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并
对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。提示:十进制数转二进制数的方式是用这个数除以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();
        }       

}

作者: 老中医    时间: 2015-7-22 23:56
不明觉厉
作者: T-l-H、小生    时间: 2015-7-23 00:57
看看,懂了。
作者: 蔡锐    时间: 2015-7-23 05:33
思路和楼主写的代码差不多呢,java本来就提供了进制转换,用它提供的方法就好
作者: 新手ing    时间: 2015-7-23 08:06
本帖最后由 新手ing 于 2015-7-23 08:44 编辑

右移,效率会比较高




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