Java请求双精度
如果在我的程序中,我使用scanner.NextDouble(),而用户输入的不是双精度字符,即任何类型的字符,我如何能再次提示他们输入有效的双精度字符?我试图抛出一个异常并捕获它,但我所做的只是告诉他们它是错误的,我不知道如何将控制权转移回try块。如果任何人有任何意见,将不胜感激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
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循环在输入错误时进行循环。提示:当您遇到异常时。您还可以查看简单的(类型转换)