温度转换器java

问题描述:

我有一个温度转换器分配。提供的代码,我必须添加的东西,使其工作。我遇到的问题是,如果scale是一个字符串数组,那么我将如何返回一个用于缩放的字符。温度转换器java

任何有** code **的东西都是我写的。

public class Temperature{ 
**private double temp; 
private char scale;** 
/** different scale names */ 
public static String[] scales = {"Celsius", "Fahrenheit", "Kelvin"}; 
**scales[0] = "C"; 
scales[1] = "F"; 
scales[2] = "K";** 

public Temperature(){ 
    **temp = 0.0; 
    scale = scales[0];** 
} 



/** Initializes a temperature object with given value in Celcius 
    * 
    * If the initial temperature is less than -273.15 then the temperature 
    * object will be initialized with -273.15C. 
    * 
    * @param temp is the initial temperature in Celsius. 
    */ 
public Temperature(double temp){ 
    **this.temp = temp; 
    if(temp < (-273.15)){ 
    temp = (-273.15); 
    } 
    scale = scales[0];** 
} 


/** Initializes a temperature object with given value using the specified scale 
* <par> 
* If the temperature is lower than absolute zero, then set the temperature to 
* absolute zero (in whichever scale is specified). 
* <par> 
* Examples: new Temperature(12.3, "K") 
*   new Temperature(-90.2, "Celsius") 
* 
* @param temp is the initial temperature 
* @param scale is the scale of initial temperature and must either be 
*  one of the Strings in the <code>scales</code> array, or 
*  the first letter (capitalized) of one of those strings. 
*/ 
public Temperature(double temp, String scale){ 
    **this.temp = temp; 
    if(temp < (-273.15)){ 
    temp = (-273.15); 
    } 
    scale = scales[];** 
} 



/** The output of this getter method must always be the first letter of one 
    * of the strings in the <code>scales</code> array, capitalized. 
    * 
    * @return the current scale of the object as a single char (the first letter, 
    *   capitalized of one of the strings from <code>scales</code>) 
    */ 
    public char getScale(){ 
    return 'X'; 
    } 
+2

你可以运行它以找出是否有意义。 – Henry

+1

@亨利怎么样?没有“主”。 –

+0

@DawoodibnKareem不太难为测试添加一个,不是吗? – Henry

你的最后一个构造函数应该如下,按您的问题..

public Temperature(double temp,String scale){ 
    if(scale.equals("C")) 
    { 
      if(temp<-273.15) 
      { 
       this.temp=-273.15; 
      } 
      else 
       this.temp=temp; 
     } 
     else if(scale.equals("F")) 
     { 
      if(temp<-459.67) 
      { 
       this.temp=-459.67) 
      } 
      else 
       this.temp=temp; 
     } 
     else if(scale.equals("K")) 
     { 
      if(temp<0) 
      { 
       this.temp=0; 
      } 
      else 
       this.temp=temp; 
     } 
     this.scale=scale; 
    } 
+3

'if(scale ==“C”)':认真吗?为什么只有在超出范围时才设置温度? – Henry

+0

对不起,错字@亨利 –

+0

@ShivKumar这不是关于打字错误。你确定要用'=='来比较'String'吗? –