import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Test7 {
public static void main(String[] args){
BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));
String line =null;
try {
while((line=bufr.readLine())!=null){
char[] buf =line.toCharArray();
for(int i=0;i<line.length();i++){
if(!Character.isDigit(buf[i])){
System.out.println("输入的不是数字!");
break;
}
}
int i=Integer.parseInt(line);
if(i>Integer.MAX_VALUE)
System.out.println("输入的数字太大");
else
toBin(i);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void toBin(int num){
StringBuffer sb =new StringBuffer();
while(num>0){
sb.append(num%2);
num =num/2;
}
System.out.println(sb.reverse());
}}

解决方案 »

  1.   

    不是空指针异常  是java.lang.NumberFormatException
      

  2.   

    空指针没找到,NumberFormatException倒是肯定有
      

  3.   

    int i=Integer.parseInt(line);话说你的line可能包含字母,然后转int时出错
      

  4.   

    while((line=bufr.readLine())!=null){
                    char[] buf =line.toCharArray();
                    for(int i=0;i<line.length();i++){
                        if(!Character.isDigit(buf[i])){
                            System.out.println("输入的不是数字!");
                            break;
                        }
                    }
                    int i=Integer.parseInt(line);
                    if(i>Integer.MAX_VALUE)
                        System.out.println("输入的数字太大");
                    else
                        toBin(i);
                }break只是跳出for循环,假如你输入的不是数字,还是照样走int i=Integer.parseInt(line);
    ,报数字格式转换错误。
      

  5.   

    你下面这两行,逻辑有点问题啊。
    int i=Integer.parseInt(line);
    if(i>Integer.MAX_VALUE)
    你能正常转换的话,不可能满足你的判断条件啊,一定小于Integer.MAX_VALUE的啊,呵呵