8、编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,
* 然后打印出这个十进制整数对应的二进制形式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,
* 并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。提示:十进制数转二进制数的方式是用这个数除以2,
* 余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。
* 其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位)
* ,就很容易理解十进制数转二进制数的这种方式。
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字:");
String regex = "\\d{0,10}";
int b = 0;
String line = sc.nextLine();
BigInteger bi = new BigInteger(line);
long l = bi.longValue();
if(!line.matches(regex)){
System.out.println("您输入的含有非数字字符,请重新输入");
}else if(l > 2147483647 ){
System.out.println("您输入的数字过大,请重新输入");
}else{
b = Integer.parseInt(line);
System.out.println(geter(b));
}
}
public static int geter(int b){
if(b > 1){
return b % 2 + geter(b / 2) * 10;
}else{
return 1;
}
}
这个提有点憋屈,怎么判断数字大了,各位还有更好的方法! |
|