【问题标题】:check for numeric input java检查数字输入java
【发布时间】:2015-10-30 15:17:46
【问题描述】:

我需要检查用户是否在 java 中输入了数值。我一直在尝试使用 hasNextDouble,但在使用 hasNextDouble 方法时遇到了奇怪的错误,并且不确定这是执行此检查的方法。

请注意,除了 if,我不能使用 while 循环或任何其他高级方法。

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");
            }
....

我修正了错字,但它仍然无法正常工作,当我输入例如“a”时它崩溃了。对我来说,在将值放入“双距离”变量后调用 hasNextDouble 也没有任何意义,但我还没有找到任何其他方法。 我只有 1 个双变量要检查,'int' 不需要验证。

编辑: 我前进了一点。现在它在崩溃之前显示错误。如何让它不崩溃但再次获取变量?

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

谢谢!

【问题讨论】:

  • 你的“奇怪错误”是什么?
  • 错字:if (!scan.hasNextDouble())
  • 我修正了错字,但它仍然无法正常工作,当我输入例如 25a 时它崩溃了。对我来说,在将值放入“双距离”变量后调用 hasNextDouble 也没有任何意义,但我还没有找到任何其他方法。我只有 1 个双变量要检查。谢谢!

标签: java validation input


【解决方案1】:

撇开错别字不谈,您在调用hasNextDouble 使用nextDouble

在一行中获取两者的最简单方法是:

if (scan.hasNextDouble()) {
    // TODO something
    double foo = scan.nextDouble(); // this consumes the first double
}
else { // TODO exit with error }
if (scan.hasNextDouble()) {
    // TODO something else
    double bar = scan.nextDouble(); // this consumes the second double
}
else { // TODO exit with error }

如果您希望它分两次使用(即用户按 Enter 两次),您可以使用两次 scan.next() 并在两个 String 上使用 Double.parseDouble,同时捕获 NumberFormatException 用于格式错误。

【讨论】:

    【解决方案2】:

    应该是scan.hasNextDouble(),重点是Double。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 2013-08-13
      • 2014-10-19
      • 2018-04-03
      • 1970-01-01
      相关资源
      最近更新 更多