Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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_Computer Science_Object Oriented Analysis - Fatal编程技术网

Java请求双精度

Java请求双精度,java,computer-science,object-oriented-analysis,Java,Computer Science,Object Oriented Analysis,如果在我的程序中,我使用scanner.NextDouble(),而用户输入的不是双精度字符,即任何类型的字符,我如何能再次提示他们输入有效的双精度字符?我试图抛出一个异常并捕获它,但我所做的只是告诉他们它是错误的,我不知道如何将控制权转移回try块。如果任何人有任何意见,将不胜感激 private double requestDoubleFromUser( String prompt ) { /*** Local Variables ***/ Scanner sc = new

如果在我的程序中,我使用scanner.NextDouble(),而用户输入的不是双精度字符,即任何类型的字符,我如何能再次提示他们输入有效的双精度字符?我试图抛出一个异常并捕获它,但我所做的只是告诉他们它是错误的,我不知道如何将控制权转移回try块。如果任何人有任何意见,将不胜感激

private double requestDoubleFromUser( String prompt )
{
    /*** Local Variables ***/

    Scanner sc = new Scanner( System.in );
    double userInput = 0;

    try
    {
    /*** Get input from user ***/

    System.out.print( prompt );
    userInput = sc.nextDouble();
    }

    catch( Exception e )
    {
        System.out.println("That was not a double");
    }

    return userInput;
}

谢谢

您可以使用
while
循环,如下所示:

double userInput = 0;
boolean done = false;
while (!done) {
    try {
        /*** Get input from user ***/
        System.out.print( prompt );
        userInput = sc.nextDouble();
        done = true;
    } catch( Exception e ) {
        System.out.println("That was not a double");
    }
}

您可以在循环中调用
Scanner#nextDouble
,并通过捕获
输入不匹配异常来使用非数字类型。使用
Double
类型允许循环不断检查输入值

Scanner sc = new Scanner(System.in);
Double userInput = null;

while (userInput == null) {
    try {
        System.out.print("Enter double:");
        userInput = sc.nextDouble();
    } catch (InputMismatchException e) {
        System.out.println("That was not a double: " + sc.nextLine());
    }
}

使用while循环在输入错误时进行循环。提示:当您遇到异常时。您还可以查看简单的
(类型转换)