Java 使用扫描仪时验证用户输入

Java 使用扫描仪时验证用户输入,java,java.util.scanner,Java,Java.util.scanner,我在使用Scanner获取用户输入并将其存储在变量中时遇到问题。问题是,当用户输入输入时,该方法正在进入一个无限循环 i、 e.用户可以输入任何值或空格,但程序不会将其作为输入,并继续下一步将其分配给变量 public class AS10 { /** * @param args the command line arguments */ public static void main(String[] args) { double X =

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

i、 e.用户可以输入任何值或空格,但程序不会将其作为输入,并继续下一步将其分配给变量

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);
    }
}
你不需要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);
}
Scanner类的hasNext方法检查输入中是否有可用的令牌。错误处理不需要while循环。在try-catch块中围绕从nextDouble方法获取值的赋值语句,并相应地处理异常

或者,您可以使用hasNextDouble方法检查输入中是否有可用的双精度值