温度转换方法输出Java

时间:2017-02-13 18:08:24

标签: java temperature

我必须编写一个名为temperature的类,我唯一​​的问题是当我尝试调用转换方法时。每当我运行主程序时,转换输出为0.0

是否与使用私有变量有关?

代码如下。

非常感谢!

import java.util.*;
public class testdriver {

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    Temperature userTemp;
    String userScale;
    //userTemp = new Temperature(1.0);
    System.out.print("Please enter your temp scale(fahrenheit or celius): ");
    userScale = sc.next();
    System.out.println();

    System.out.print("Please enter your temp in " + userScale + ": ");
    userTemp = new Temperature(sc.nextDouble());
    System.out.println();

    System.out.println(userTemp.toString());
    System.out.println();

    System.out.println("your temp is: " + userTemp.getTemp());
    System.out.println();

    System.out.println("your scale is: " + userTemp.getScale(userScale));
    System.out.println();

    System.out.println(userTemp.conversion());
    System.out.println();

    double userTemp2 = userTemp.conversion();
    System.out.println(userTemp.aboveBoiling(userTemp2));







}

}

下面是我测试函数调用的测试驱动程序

{{1}}

}

3 个答案:

答案 0 :(得分:4)

this.scale == "celcius"this.scale.equals("fahrenheit")替换为this.scale.equals("celcius"). (this.temp - 32) * (double)(5/9); 在java中,==运算符仅比较引用或原始值(int,long,float,double .. )。

编辑:我在您的代码中发现了另一个问题:

 (this.temp - 32) * ((double)5/9);

5和9是整数,然后除法将导致0.你需要在/ operation之前将其中一个操作数强制转换为:

(this.temp - 32) * (5./9.);

或:

{{1}}

答案 1 :(得分:1)

我发现您的代码存在两个问题。

1)字符串相等:对于java中的字符串相等,使用equals而不是==。它们在java中完全不同,仅用于原始数据类型相等。

2)您需要创建一个公共方法来设置比例。您没有在任何地方设置比例值

public void setScale (String scale){ 
this.scale=scale;
}

and your getter should be changed to

public String getScale() {
    return scale;
}

答案 2 :(得分:0)

你的问题不是变量的初始化吗?当你使用this.temp时,你正在转换方法中的“零”而不是外部值。 Actualy在这种情况下你不需要使用这个。

抱歉,如果我弄错了