黑马程序员技术交流社区

标题: 关于键盘录入的问题,希望大牛们帮忙看看能不能有其他方... [打印本页]

作者: _J2EE_LiXiZhen    时间: 2017-11-16 23:14
标题: 关于键盘录入的问题,希望大牛们帮忙看看能不能有其他方...
本帖最后由 _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

希望大牛们提供更多的解决方法
作者: EYE_SEE_YOU    时间: 2017-11-18 08:31
一般用户输入的数据我们都把它当作字符串,当需要的是数字时,用正则判断,正确就转换,否则就提示有误,请重新输入




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2