使用Scanner时验证用户输入

时间:2015-04-06 19:01:22

标签: java java.util.scanner

我无法使用Scanner获取用户输入并将其存储在变量中。问题是,当用户输入输入时,该方法进入无限循环。

即。用户可以输入任何值或空格,但程序不会将它们作为输入,并继续下一步将它们分配给变量。

public class AS10 {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        double X = 0;
        double Y = 0;
        System.out.println("please enter the value of X-cordinate and Y cordinate :");
        Scanner scn = new Scanner(System.in);
        while (scn.hasNext()){
         X = scn.nextDouble();
         Y = scn.nextDouble();
        }

        System.out.println("  the value of y is " + Y+ "the value of x is "+ X);
    }
}

3 个答案:

答案 0 :(得分:0)

您不需要while循环。您的代码中没有任何内容可以导致循环结束。

只需删除它,您的代码即可运行。

public static void main(String[] args) {
    double X = 0;
    double Y = 0;
    System.out.println("please enter the value of X-cordinate and Y cordinate :");
    Scanner scn = new Scanner(System.in);
    X = scn.nextDouble();
    Y = scn.nextDouble();

    System.out.println("  the value of y is " + Y + " the value of x is " + X);
}

答案 1 :(得分:0)

Scanner class hasNext方法检查输入中是否有可用的令牌。您不需要while循环来进行错误处理。在try catch块中包含赋值语句(从nextDouble方法获取值)并相应地处理异常。

或者您可以使用hasNextDouble方法检查输入中是否有可用的double值。

答案 2 :(得分:0)

该程序产生所需的输出(只需将print语句包含在while循环中):

public static void main(String... args) {

    double X = 0;
    double Y = 0;
    System.out.println("please enter the value of X-cordinate and Y cordinate :");
    Scanner scn = new Scanner(System.in);
    while (scn.hasNext()) {
        X = scn.nextDouble();
        Y = scn.nextDouble();
        System.out.println("  the value of y is " + Y + "the value of x is " + X);
    }

}

while循环不会终止(直到按Ctrl + C,或者终止java进程)。