欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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