2017-10-19 2 views
-2

J'ai une affectation de convertisseur de température. Le code a été fourni et je dois y ajouter des choses pour le faire fonctionner. La question que j'ai est de savoir comment je retournerais un char pour l'échelle quand les échelles est un tableau de chaînes. Tout ce qui a ** code ** est ce que j'ai écrit.Convertisseur de température java

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

Vous pouvez l'exécuter pour savoir s'il est logique. – Henry

+1

@Henry comment? Il n'y a pas de "main". –

+0

@DawoodibnKareem pas trop difficile d'en ajouter un pour tester, n'est-ce pas? – Henry

Répondre

0

Votre constructeur devrait ressembler à ceci selon votre question ..

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 ")': sérieux? Et pourquoi ne régler la température que lorsqu'elle est hors de portée? – Henry

+0

désolé pour l'erreur @Henry –

+0

@ShivKumar Il ne s'agit pas de faute de frappe. Êtes-vous sûr de vouloir utiliser '==' pour comparer 'String'? –