温度转换:字符串输入为Double

时间:2013-11-14 22:28:45

标签: java string user-interface type-conversion

//我试图使用GUI程序来转换温度。我已经为用户使用了一个JTextField来输入一串数字,这样我就可以将该字符串字段转换为double,然后将该double用于公式,然后将其转换回字符串。我需要使用两种不同的方法进行转换。我对以下行的转换方法有错误:

c = double.parseDouble(userInput); 
f = (c * 9 / 5) + 32);

&安培;

f = double.parseDouble(userInput);
c = (f * 9 / 5) + 32);

这是我的代码:

public Temperature() {
    super( "Temperature Converter" ) ;
    setSize( HEIGHT, WIDTH ) ;
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ) ;

    JPanel panel1 = new JPanel() ;
    panel1.setLayout(new GridLayout(2,5));

    labelC = new JLabel("Celsius:");
    panel1.add(labelC);

    textFieldC = new JTextField( "Enter Here") ;
    panel1.add(textFieldC) ;

    labelEquals = new JLabel("=");
    panel1.add(labelEquals);

    textFieldAnswerF = new JTextField( "Answer") ;
    panel1.add(textFieldAnswerF) ;

    convertC2F = new JButton( "C to F") ;
    panel1.add(convertC2F) ;

    labelF = new JLabel("Fahrenheit:");
    panel1.add(labelF);

    textFieldF = new JTextField( "Enter Here") ;
    panel1.add(textFieldF) ;

    labelEquals = new JLabel("=");
    panel1.add(labelEquals);

    textFieldAnswerC = new JTextField( "Answer") ;
    panel1.add(textFieldAnswerC) ;

    convertF2C = new JButton( "F to C") ;
    panel1.add(convertF2C) ;

    add(panel1) ;

} // Temperature constructor

/**
    Method to convert Celsius to Fahrenheit
*/
public double fahrenheit(double f, double c){
    String  userInput = textFieldC.getText();
    c = double.parseDouble(userInput); 
    f = (c * 9 / 5) + 32);
    textFieldAnswerF.setText("" + f);
}

/**
    Method to convert Fahrenheit to Celsius
*/
public double celsius(double c, double f){
    String  userInput = textFieldF.getText();
    f = double.parseDouble(userInput);
    c = (f * 9 / 5) + 32);
    textFieldAnswerC.setText("" + c);
}

以下是我的错误:

Temperature.java:87: error: class expected
    c = double.parseDouble(userInput);
               ^
Temperature.java:87: error: ';' expected
    c = double.parseDouble(userInput);
                          ^
Temperature.java:87: error: not a statement
    c = double.parseDouble(userInput);
                           ^
Temperature.java:87: error: ';' expected
    c = double.parseDouble(userInput);
                                    ^
Temperature.java:88: error: ';' expected
    f = (c * 9 / 5) + 32);
                        ^
Temperature.java:97: error: class expected
    f = double.parseDouble(userInput);
               ^
Temperature.java:97: error: ';' expected
    f = double.parseDouble(userInput);
                          ^
Temperature.java:97: error: not a statement
    f = double.parseDouble(userInput);
                           ^
Process javac exited with code 1
Temperature.java:97: error: ';' expected
    f = double.parseDouble(userInput);
                                    ^
Temperature.java:98: error: ';' expected
    c = (f * 9 / 5) + 32);
                        ^
10 errors

3 个答案:

答案 0 :(得分:1)

Java区分大小写。使用

f = Double.parseDouble(userInput);

另外,在两种情况下都从第二个语句中删除额外的括号:

c = (f * 9 / 5) + 32;
                    ^

答案 1 :(得分:0)

Celsius转换公式不正确。它是c =(f - 32)*(5/9)。尝试

c = (f - 32) * 5 / 9;

使用这两个公式,最后会有一个额外的,无与伦比的);删除它们。

答案 2 :(得分:0)

double是原始类型,而Double是包含类的包装类。在你的情况下,你正在使用双重和调用方法,这是无效的。

因此请使用Double