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

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微莱羽墨

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值