键盘录入一个int类型的整数,对其求二进制表现形式(运用异常)

需求

键盘录入一个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

发布了55 篇原创文章 · 获赞 5 · 访问量 4168

猜你喜欢

转载自blog.csdn.net/qq_43654669/article/details/100184729