Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当用户输入正确时停止程序运行,如果不正确,请反复给机会_Java - Fatal编程技术网

Java 当用户输入正确时停止程序运行,如果不正确,请反复给机会

Java 当用户输入正确时停止程序运行,如果不正确,请反复给机会,java,Java,我是java编程的初学者,有需要完成的任务,正在寻找一些有用的提示。编写程序需要用户正确的浮点输入,如果输入不正确,程序会给另一个机会,直到正确输入,我的问题是,当我输入不正确的输入时,它会不停地运行,有什么想法吗 public static void main(String[] args) { Scanner in = new Scanner(System.in); float f = 0; int x = 1; do { try {

我是java编程的初学者,有需要完成的任务,正在寻找一些有用的提示。编写程序需要用户正确的浮点输入,如果输入不正确,程序会给另一个机会,直到正确输入,我的问题是,当我输入不正确的输入时,它会不停地运行,有什么想法吗

   public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    float f = 0;
    int x = 1;
    do {
        try {
            System.out.print("Enter an float:");
            f = in.nextFloat();
            x =2;

        } catch (InputMismatchException e) {
            System.err.println("Incorrect entry.");

        }
        System.out.println("Your entry is:" + f);

    }
    while(x==1);
}

执行此操作,您将从程序中获得所需的输出

public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        float f = 0;
        int x = 1;
        do {
            try {
                System.out.print("Enter an float:");
                f = in.nextFloat();
                x = 2;

            } catch (InputMismatchException e) {
                System.err.println("Incorrect entry.");
                in.next();

            }

        } while (x == 1);
        System.out.println("Your entry is:" + f);

    }

您只需在catch块中添加
in.next()
,即可继续此过程。

执行此操作,您将从程序中获得所需的输出

public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        float f = 0;
        int x = 1;
        do {
            try {
                System.out.print("Enter an float:");
                f = in.nextFloat();
                x = 2;

            } catch (InputMismatchException e) {
                System.err.println("Incorrect entry.");
                in.next();

            }

        } while (x == 1);
        System.out.println("Your entry is:" + f);

    }

您只需在catch块中添加
in.next()
,即可继续此过程。

作为接受答案的替代方案,您可能需要:

1) 检查下一个标记是否为浮点
hasNextFloat()

2) 如果不是,则吞下整行
nextLine()


这样做的好处是可以避免错误的输入行包含多个标记(例如:“aa bb cc”)。

作为可接受答案的替代方案,您可能需要:

1) 检查下一个标记是否为浮点
hasNextFloat()

2) 如果不是,则吞下整行
nextLine()


这样做的好处是避免了具有多个标记的错误输入行(例如:“aa bb cc”)。

Add
in.nextLine()在<<代码> > 循环,吞下剩余的行。在这种情况下,我们可以考虑正确的输入,我已经执行了程序输入3,7,45.45,它只运行一次。不正确的输入的任何例子。不正确的输入可以是任何东西,例如字母,输入JBIVREBV,你会看到,正确的输入,是浮点数,我现在试试Bergerin.nextLine();不帮助在.nextLine()中添加
在<<代码> > 循环,吞下剩余的行。在这种情况下,我们可以考虑正确的输入,我已经执行了程序输入3,7,45.45,它只运行一次。不正确的输入的任何例子。不正确的输入可以是任何东西,例如字母,输入JBIVREBV,你会看到,正确的输入,是浮点数,我现在试试Bergerin.nextLine();非常感谢@abhishekkumar,现在它可以工作了。如果你的问题已经解决,请选择这个作为公认的答案。再次感谢感谢@abhishekkumar,现在它可以工作了。如果你的问题已经解决,请选择这个作为公认的答案。再次感谢