日期:2014-05-20  浏览次数:20715 次

求高手解答一个Scanner的怪题
代码如下
Java code

package com;

import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (true) {
            try {
                int score = 0;
                score = sc.nextInt();
            } catch (Exception e) {
                System.out.println("输入的不是一个整数");
                continue;
            }
        }
    }

}


当输入的是数字的时候,一切正常,可以重复输入数字
一旦输入字符串,将会死循环输出
输入的不是一个整数
输入的不是一个整数
输入的不是一个整数
输入的不是一个整数
输入的不是一个整数
输入的不是一个整数
输入的不是一个整数
输入的不是一个整数
输入的不是一个整数
输入的不是一个整数
输入的不是一个整数
输入的不是一个整数
输入的不是一个整数
输入的不是一个整数
输入的不是一个整数
输入的不是一个整数
输入的不是一个整数
输入的不是一个整数
根本没输入的机会,求高手解答,
另外如果把Scanner的创建放到循环里面,输入字符串就不会出现问题了。

------解决方案--------------------
Java code

import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (true) {
            try {
                int score = 0;
                score = sc.nextInt();
            } catch (Exception e) {
                System.out.println("输入的不是一个整数");
                String temp = sc.next();//加上这句,让把输入的非数字读进去
                continue;
            }
        }
    }

}