java中循环判断用户是否输入正确的数字

java中循环的一个小示例

while循环判断用户的输入是否是数字

  • 有这样一道题目:
    在这里插入图片描述
    循环和switch选择结构,初学的学生,做起来感觉比较难,如果不考虑用户输入非数字的情况,代码如下:
	public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入数字1-7,(0退出):");
        int num = input.nextInt();
        String day = "";
        while (num != 0) {
            switch (num) {
                case 1:
                    day = "MON";
                    break;
                case 2:
                    day = "TUE";
                    break;
                case 3:
                    day = "WED";
                    break;
                case 4:
                    day = "THU";
                    break;
                case 5:
                    day = "FRI";
                    break;
                case 6:
                    day = "SAT";
                    break;
                case 7:
                    day = "SUN";
                    break;
                default:
                    day = "0";  //输入非0-7的数字时,先不处理
                    break;
            }
            if (!day.equals("0")) {     //判断结束后再确定输出内容
                System.out.println("今天是:" + day);
            } else {
                System.out.println("输入错误!");
            }
            System.out.print("请输入数字1-7,(0退出):");
            num = input.nextInt();

        }
        System.out.println("谢谢使用,再见");

    }

其中为了解决用于输入非0-7的数字时可以正确提示,在default那里,用day ="0"来临时处理,并在后面输出时进行判断,运行效果如下:

请输入数字1-7(0退出)1
今天是:MON
请输入数字1-7,(0退出):2
今天是:TUE
请输入数字1-7,(0退出):9
输入错误!
请输入数字1-7,(0退出):0
谢谢使用,再见

基本符合题目要求
但是当用户输入非数字时,会报错,原因是没有处理非数字输入的情况;

在这里插入图片描述
于是,考虑到Scanner 对象有个hasNextInt()方法可以判断用户输入的是否是一个整数,来进行处理,完美解决用户的非数字输入问题,当然,代码不是很简洁,但是主要是为了解决问题,还有,刚开始学习循环和分支选择的同学,还没有学如何进行异常处理,就没有用到try

	public static void main(String[] args) {
        Scanner input =  new Scanner(System.in);
        System.out.println("请输入数字1-7:0退出:");
        int num = 0;
        while (true){
            if(!input.hasNextInt()){
                System.out.print("请输入正确的数字:");
                String a1 = input.next();   //必须接收输入,这句不可缺少,否则死循环
            }else{
                break;
            }
        }
        num = input.nextInt();
        String day = "";
        while (num != 0) {
            switch (num) {
                case 1:
                    day = "MON";
                    break;
                case 2:
                    day = "TUE";
                    break;
                case 3:
                    day = "WED";
                    break;
                case 4:
                    day = "THU";
                    break;
                case 5:
                    day = "FRI";
                    break;
                case 6:
                    day = "SAT";
                    break;
                case 7:
                    day = "SUN";
                    break;
                default:
                    day = "0";
                    break;
            }
            if (!day.equals("0")) {
                System.out.println("今天是:" + day);
            } else {
                System.out.println("输入错误!");
            }
            System.out.print("请输入数字1-7,(0退出):");
            while (true){
                if(!input.hasNextInt()){
                    System.out.print("请输入正确的数字:");
                    String a1 = input.next();  //不能省略
                }else{
                    break;
                }
            }
            num = input.nextInt();

        }
        System.out.println("谢谢使用,再见");
    }

运行结果如下:
在这里插入图片描述
其中while(true)循环判断用户的输入是否是整数;
下面的 input.next()必须要有,否则就无限死循环。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值