Celsius / Fahrenheit转换错误

时间:2013-10-03 02:44:22

标签: java

对不起我的初学者错误,但我正在编写一个计算器,将华氏温度转换为摄氏温度,将摄氏温度转换为华氏温度,但我不断收到此错误:

Exception in thread "main" java.lang.NumberFormatException: 
For input string: "69C"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241)
    at java.lang.Double.valueOf(Double.java:504)
    at Converter.main(Converter.java:39)  

这是我的代码,希望你能提供帮助:

import java.util.Scanner; 
public class Converter {

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);

        System.out.println("Welcome to the Fahrenheit/Celsius Converter!");
        System.out.println("To convert, type in your temperature and the
                            identify if you are using fahrenheit or celsius.");
        System.out.println("Example: 69F or 69C F = Fahrenheit C = Celsius");

        String temperature;
        char f = 'f';
        char c = 'c';
        double answer , temp;

        temperature = keyboard.nextLine();            

        if (temperature.contains("F")) {
            temperature = temperature.replace(f , ' ');
            temp = Double.valueOf(temperature);
            answer = temp - 30 / 2;
            System.out.println("Poof! The temperature is " + answer + "C");
        } else {
            System.out.println("You entered the temperature wrong!");
        }

        if (temperature.contains("F")) {
            temperature = temperature.replace(f , ' ');
            temp = Double.valueOf(temperature);
            answer = temp - 30 / 2;
            System.out.println("Poof! The temperature is " + answer + "C");
        } else {
            System.out.println("You entered the temperature wrong!");
        }

        if (temperature.contains("C")) {
            temperature = temperature.replace(c , ' ');
            temp = Double.valueOf(temperature);
            answer = temp + 30 * 2;
            System.out.println("Poof! The temperature is " + answer + "F");
        } else {
            System.out.println("You entered the temperature wrong!");
        }

        if (temperature.contains("c")) {
            temperature = temperature.replace(c , ' ');
            temp = Double.valueOf(temperature);
            answer = temp + 30 * 2;
            System.out.println("Poof! The temperature is " + answer + "F");
        } else {
            System.out.println("You entered the temperature wrong!");
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您无法将69C转换为数字。替换是区分大小写的

尝试

temperature = temperature.replace('C' , ' ');

当然你可以将你的可变数改为'C'

答案 1 :(得分:0)

错误告诉您需要知道的一切 - 直到行号! “69C”不是整数,所以当你尝试解析它时,它不起作用!。