无法从双重错误转换为双重错误。我该如何解决?

时间:2016-08-09 18:43:42

标签: java user-input

我正在尝试创建一个代码,该代码将提示用户输入并允许他们在不同类型的度量和美国度量之间进行转换。我以为我已经完成但我遇到了一个我无法解决的错误。每次我使用“Double.valueOf(readConsole.next());”我收到一个错误,上面写着“类型不匹配:无法从Double转换为double”。有想法该怎么解决这个吗?非常感谢任何帮助。

我的代码:

import java.util.Scanner;

public class MeasurementConversion
{
    public static void main(String[]args)
    {
        Scanner readConsole = new Scanner(System.in);
        String convert;
        double poundAmount;
        double kilogAmount;
        double ounceAmount;
        double gramAmount;
        double feetAmount;
        double meterAmount;
        double mileAmount;
        double kilomAmount;

        System.out.println("Hello, I am a conversion calculator. I can convert pounds to kilograms, ounces to grams,");
        System.out.println("feet to meters, miles to kilometers, and vice versa.");
        System.out.println("What would you like to convert?");
        convert = readConsole.nextLine();
        if (convert.equalsIgnoreCase("pounds to kilograms"))
        {
            System.out.println("Ok, what is the amount of pounds you know?");
            poundAmount = Double.valueOf(readConsole.next());
            kilogAmount = poundAmount * .4536;
            System.out.println("That is " + kilogAmount + " kilograms.");
        }
        if (convert.equalsIgnoreCase("kilograms to pounds"))
        {
            System.out.println("Ok, what is the amount of kilograms you know?");
            kilogAmount = Double.valueOf(readConsole.next());
            poundAmount = kilogAmount * 2.20462;
            System.out.println("That is " + poundAmount + " pounds.");
        }
        if (convert.equalsIgnoreCase("ounces to grams"))
        {
            System.out.println("Ok, what is the amount of ounces you know?");
            ounceAmount = Double.valueOf(readConsole.next());
            gramAmount = ounceAmount * 28.5;
            System.out.println("That is " + gramAmount + " grams.");    
        }
        if (convert.equalsIgnoreCase("grams to ounces"))
        {
            System.out.println("Ok, what is the amount of grams you know?");
            gramAmount = Double.valueOf(readConsole.next());
            ounceAmount = gramAmount * .035274;
            System.out.println("That is " + ounceAmount + " ounces.");
        }
        if (convert.equalsIgnoreCase("feet to meters"))
        {
            System.out.println("Ok, what is the amount of feet you know?");
            feetAmount = Double.valueOf(readConsole.next());
            meterAmount = feetAmount * .3048;
            System.out.println("That is " + meterAmount + " meters.");
        }
        if (convert.equalsIgnoreCase("meters to feet"))
        {
            System.out.println("Ok, what is the amount of meters you know?");
            meterAmount = Double.valueOf(readConsole.next());
            feetAmount = meterAmount * 3.28084;
            System.out.println("That is " + feetAmount + " feet.");
        }
        if (convert.equalsIgnoreCase("miles to kilometers"))
        {
            System.out.println("Ok, what is the amount of miles you know?");
            mileAmount = Double.valueOf(readConsole.next());
            kilomAmount = mileAmount * 1.61;
            System.out.println("That is " + kilomAmount + " kilometers.");
        }
        if (convert.equalsIgnoreCase("kilometers to miles"))
        {
            System.out.println("Ok, what is the amount of kilometers you know?");
            kilomAmount = Double.valueOf(readConsole.next());
            mileAmount = kilomAmount * .621371;
            System.out.println("That is " + mileAmount + " miles.");
        }
    }
}

2 个答案:

答案 0 :(得分:0)

我不是java专家,但从代码中我看到你的变量是原始类型double而你的方法调用返回类Double的一个实例。您可以使用Double.parseDouble()将String转换为double。查看Convert String to double in Java

答案 1 :(得分:0)

我认为您使用Java 1.4或更低版本进行编译,并且您在执行时但在编译期间遇到问题。

type mismatch: cannot convert from Double to double.

是编译错误。

Java 1.4及更少支持自动装箱。因此,此处不允许您输入的自动转化Double -> double

 double poundAmount = Double.valueOf(readConsole.next());

尝试检查所使用的Java版本并至少使用1.5版本的JDK