A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 _J2EE_LiXiZhen 于 2017-11-16 23:17 编辑

代码概述:键盘录入一个整数,如果输入-1就跳出循环,否则继续.
问题:用nextInt()方法时,考虑到用户可能输入字符串,导致录入失败抛异常,所以用try-catch捕捉并处理, 但是,由于录入时失败,debug后发现接收控制台录入的变量被占用,且无法重写赋值或释放,本人采用的是将nextInt()方法改为nextLine(),再将字符串通过Integer.parseInt()转换的方式解决此问题.
始终感觉会有更好的方式解决,迫切希望大牛们提供多些解决方案

问题代码:
[Java] 纯文本查看 复制代码
public class Test {
        public static void main(String[] args) {
        
                int input;
                Scanner sc = new Scanner(System.in);
                while(true) {
                        System.out.println("input a number :");
                        try {
                                input = sc.nextInt();
                                if(input == -1)
                                        break;
                        }catch (Exception e) {
                                System.out.println("!!!!");
                        }
                }
        }
}

由于变量空间被占用导致无法继续录入,无法跳出循环
结果展示:
C:/Users/Administrator/Desktop/捕获.JPG

解决后代码:
[Java] 纯文本查看 复制代码
public class Test {
        public static void main(String[] args) {
        
                String str;
                Scanner sc = new Scanner(System.in);
                while(true) {
                        System.out.println("input a number :");
                        try {
                                str = sc.nextLine();
                                int input = Integer.parseInt(str);
                                if(input == -1)
                                        break;
                        }catch (Exception e) {
                                System.out.println("!!!!");
                        }
                }
        }
}

结果展示:程序正常使用
C:/Users/Administrator/Desktop/捕获2.JPG

希望大牛们提供更多的解决方法

1 个回复

倒序浏览
EYE_SEE_YOU 来自手机 高级黑马 2017-11-18 08:31:31
沙发
一般用户输入的数据我们都把它当作字符串,当需要的是数字时,用正则判断,正确就转换,否则就提示有误,请重新输入
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马