本帖最后由 _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
 
 
 
希望大牛们提供更多的解决方法 |