黑马程序员技术交流社区

标题: 没输出呀 [打印本页]

作者: 工善器    时间: 2013-12-22 16:50
标题: 没输出呀
本帖最后由 工善器 于 2013-12-22 16:52 编辑

package first;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

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

public class Test{
    static StringBuilder getBinary(long sum,StringBuilder strb){
        while(sum>=0)
        {        
            strb.append(sum%2);        
            sum=sum/2;
        }
strb=strb.reverse();
        return strb;
    }
    public static void main(String[] args) {
//        创建一个键盘录入对象,经典的那句话
        BufferedReader bufr=new
                BufferedReader(new InputStreamReader(System.in));
        try {
            String line =bufr.readLine();
//            把缓冲区读到的键盘录入赋给一个字符串变量
//            用正则表达式判断,录入的数据是否全为数字,不是直接返回。
            if(!line.matches("\\d+"))
            {
//                不符合要求的話給予提示直接返回
                System.out.println("你输入的包含非法字符,请重新输入:");
                return ;
            }
//            用包装类的方法Integer.parseInt(),将字符串转变成十进制参数表示的整数值。
            int num=Integer.parseInt(line);
            if(num>Integer.MAX_VALUE)
            {
                System.out.println("你输入的数字过大,请重新输入");
                return ;
            }
            System.out.println("你输入的十进制数是:"+num);
            int ss=num%10;
            System.out.println("这个数模10后得:"+ss);
            StringBuilder strb=new StringBuilder();
            
            getBinary(num, strb);
            System.out.println(strb);
            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }        
    }
}

作者: 工善器    时间: 2013-12-22 16:53
希望某个哥们解决此问题后,给多发点类似于入学考试难度的,java联系题,不尽感激之情,源源不断,版主会给您加分




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