键盘录入一个int类型的整数,对其求二进制表现形式(运用异常)
程序员文章站
2022-07-15 09:37:10
...
需求
键盘录入一个int类型的整数,对其求二进制表现形式
如果录入的整数过大,给予提示,录入的整数过大请重新录入一个整数BigInteger
如果录入的是小数,给予提示,录入的是小数,请重新录入一个整数
如果录入的是其他字符,给予提示,录入的是非法字符,请重新录入一个整数
import java.util.Scanner;
public class exception_int {
public static void main(String[] args) {
Scanner sc = new Scanner ( System.in);
System.out.println ( "请输入一个整数" );
String line = sc.nextLine (); //将键盘录入结果存储在line里
try{
int num = Integer.parseInt ( line ); //将字符串转化成整数
System.out.println ( Integer.toBinaryString ( num ) ); //将整数转化成二进制数
}catch (Exception e){
System.out.println ( "录入整数过大" );
}
}
}
结果:
请输入一个整数
111111111111111111111
录入整数过大
但是如果输入其他字符如下:
请输入一个整数
aaaaaaa
录入整数过大
这股结果和需求正常逻辑不符合,因此我们需要判断录入的是否是数字而不是其他字符。
正确代码:
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
public class exception_int {
/* 键盘录入一个int类型的整数,对其求二进制表现形式
如果录入的整数过大,给予提示,录入的整数过大请重新录入一个整数BigInteger
如果录入的是小数,给予提示,录入的是小数,请重新录入一个整数
如果录入的是其他字符,给予提示,录入的是非法字符,请重新录入一个整数*/
public static void main(String[] args) {
Scanner sc = new Scanner ( System.in );
System.out.println ( "请输入一个整数" );
while (true) {
String line = sc.nextLine ( ); //将键盘录入结果存储在line里
try {
int num = Integer.parseInt ( line ); //将字符串转化成整数
System.out.println ( Integer.toBinaryString ( num ) ); //将整数转化成二进制数
break;
} catch (Exception e) {
try { //ctrl + shift + z(catch try)快捷键
new BigInteger ( line );
System.out.println ( "录入错误,您录入的是一个过大的整数,请重新录入整数:" );
} catch (Exception e2) {
try {
new BigDecimal ( line );
System.out.println ( "录入错误,您录入的是一个小数,请重新录入整数:" );
} catch (Exception e1) {
System.out.println ( "录入错误,您录入的是非法字符,请重新录入整数:" );
}
}
}
}
}
}
结果
请输入一个整数
21.4
录入错误,您录入的是一个小数,请重新录入整数:
请输入一个整数
11
1011