gpt4 book ai didi

java - 如何检查用户输入而不退出错误

转载 作者:行者123 更新时间:2023-12-01 10:59:14 24 4
gpt4 key购买 nike

我需要检查用户输入,如果该值不是数字,则要求提供正确的输入。但是,当我执行此代码时,程序会显示一条错误消息,然后崩溃 - 它不会要求用户提供新的输入。如何解决这个问题?谢谢你!

import java.util.Scanner;
import java.lang.Math;
public class CentimeterInch
{
public static void main (String [] args)
{
final int MAX=100, feet=12, meter=100;
final double inch=2.54;
Scanner scan = new Scanner (System.in);
System.out.println ("This program converts distances. ");
System.out.println ("Enter distance and unit (e.g. 37 1 or 100 2):");
double distance=scan.nextDouble();
if (!scan.hasNextDouble())
{
System.out.println ("please enter a numeric value");
distance=scan.nextDouble();
}
int unitType = scan.nextInt();
if (distance<0)
{
System.out.println ("Please enter a non negative distance");
}
....

最佳答案

只需在执行 scan.nextDouble() 之前带上 if 子句即可。

 if (!scan.hasNextDouble())
{
System.out.println ("please enter a numeric value");
scan.nextLine();
distance=scan.nextDouble();
}

double distance=scan.nextDouble();

首先确保要读取的数字是double值,然后再读取。你正在做相反的事情

scan.nextLine()在这里做什么?

假设用户输入abc 2scan.hasNextDouble() 检查接下来要读取的标记是否为 double 值。事实并非如此,因此 scan.hasNextDouble() 的计算结果为 false 并且 if 子句被执行。在 if 子句中,有 scan.nextLine()。它只是丢弃来自 scan 的当前输入,从而刷新 scan。如果您不这样做,则 scan 仍包含 abc 2 并且在执行 distance = scan.nextDouble() 时,编译器会发出错误。

最好将 if 替换为 while。假设用户输入错误。您的程序检查输入并发现它不是 double 值。如果执行 if 子句,系统会要求用户输入一个数值。如果用户再次输入错误怎么办?这次,你会得到一个错误。使用 while 循环使您的程序不断询问用户正确的输入,直到他输入数值。

关于java - 如何检查用户输入而不退出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33453222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com