Java程序将告诉用户输入是否为double

时间:2013-09-18 03:17:20

标签: java double

我需要一些代码来判断某些用户输入是否为double。如果它是double,我需要它存储在变量degreeCelsius中,如果不是,我需要程序退出。总的来说,该程序将采用一些double值并将它们用作摄氏度并将它们转换为华氏度。这就是我到目前为止所做的:

import java.util.*;
public class Lab4b
{
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        double degreeCelsius = 0.0;
        double degreeFahrenheit = 0.0;
        System.out.println("Celcius    | Fahrenheit");

        while(scan.next() != null)
            {    
//this is where I need the code. If you see any other errors, feel free to correct me
            //if (degreeCelsius = Double)
                    {
                        degreeCelsius = scan.nextDouble();
                    }
                else
                    {
                        System.exit(0);
                    }
                degreeFahrenheit = degreeCelsius * (9.0/5.0) + 32.0;
            }
    }
}

6 个答案:

答案 0 :(得分:1)

由于你可能得到双重输入,最好读取一个字符串,然后尝试将其转换为double。标准模式是:

Scanner sc = new Scanner(System.in);
double userInput = 0;
while (true) {
    System.out.println("Type a double-type number:");
    try {
        userInput = Double.parseDouble(sc.next());
        break; // will only get to here if input was a double
    } catch (NumberFormatException ignore) {
        System.out.println("Invalid input");
    }
}

在输入double之前,循环无法退出,之后userInput将保留该值。

另请注意如何通过将提示放在循环中,可以避免无效输入上的代码重复。

答案 1 :(得分:0)

这是修改你的时间的一种方法:

    while(scan.hasNextDouble()) {
        degreeCelsius = scan.nextDouble();
        degreeFahrenheit = degreeCelsius * (9.0/5.0) + 32.0;
        System.out.println(degreeCelsius + " in Celsius is " + degreeFahrenheit + " in Fahrenheit");

    }

请记住,扫描仪通过空格分解输入的事件,由于Unix和Windows默认终端设置,您仍然通常需要在条目之间按Enter键。

所以这里有更多信息:

How to read a single char from the console in Java (as the user types it)?

答案 2 :(得分:0)

使用Double.parse方法。请参阅文档here

使用上述方法,解析用户输入并捕获NumberFormatException。任何不是Double-parseable的用户输入都会抛出可以打破循环的异常。

答案 3 :(得分:0)

试试这个

while (scan.hasNext()) {
   if (scan.hasNextDouble()) {
      double d = scan.nextDouble();
      ...
   } else {
      ...

答案 4 :(得分:0)

您可以使用以下方法检查输入字符串是否为双倍。

public boolean isDouble(String inputString) {
    try {
            Double d=Double.parseDouble(inputString);
        return true;
    } catch (NumberFormatException e) {
        return false;
    }
}

答案 5 :(得分:0)

{{1}}