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());
}
}
6 个解决方案
#1
不是空指针异常 是java.lang.NumberFormatException
#2
错误发出来看看是哪行的
#3
空指针没找到,NumberFormatException倒是肯定有
#4
int i=Integer.parseInt(line);
话说你的line可能包含字母,然后转int时出错
话说你的line可能包含字母,然后转int时出错
#5
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);
,报数字格式转换错误。
#6
你下面这两行,逻辑有点问题啊。
int i=Integer.parseInt(line);
if(i>Integer.MAX_VALUE)
你能正常转换的话,不可能满足你的判断条件啊,一定小于Integer.MAX_VALUE的啊,呵呵
int i=Integer.parseInt(line);
if(i>Integer.MAX_VALUE)
你能正常转换的话,不可能满足你的判断条件啊,一定小于Integer.MAX_VALUE的啊,呵呵
#1
不是空指针异常 是java.lang.NumberFormatException
#2
错误发出来看看是哪行的
#3
空指针没找到,NumberFormatException倒是肯定有
#4
int i=Integer.parseInt(line);
话说你的line可能包含字母,然后转int时出错
话说你的line可能包含字母,然后转int时出错
#5
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);
,报数字格式转换错误。
#6
你下面这两行,逻辑有点问题啊。
int i=Integer.parseInt(line);
if(i>Integer.MAX_VALUE)
你能正常转换的话,不可能满足你的判断条件啊,一定小于Integer.MAX_VALUE的啊,呵呵
int i=Integer.parseInt(line);
if(i>Integer.MAX_VALUE)
你能正常转换的话,不可能满足你的判断条件啊,一定小于Integer.MAX_VALUE的啊,呵呵