2016-01-18 1 views
0

Fondamentalement, la tâche est: Je devrais entrer une valeur de température suivie d'un blanc et la lettre C pour Celsius ou F pour Fahrenheit, par exemple: "-12 C" ou "165 F" et la sortie devrait être dans quel état l'eau est à la température entrée. Le point de fusion de la glace est pour cet exercice à 32 F et le point d'ébullition de l'eau est à 212 F. Je suis coincé sur comment obtenir l'entrée de Celcius OU Fahrenheit et comment mettre à jour le code ci-dessous pour les points d'ébullition de la Fahrenheit aussi bien. Mon code jusqu'à présent:États de l'eau - Celsius et Fahrenheit Java

public static void stateOfWater(){ 
    System.out.println("Please enter a temperature value in Celcius or Fahrenheit : "); 
    Scanner input = new Scanner (System.in); 
    int x = input.nextInt(); 

    if (x <= 0) 
     System.out.println("Water is solid at " + x); 

    else if (100 <= x) 
     System.out.println("Water is gaseous at " + x); 

    else 
     System.out.println("Water is liquid at " + x ); 
    input.close(); 

    } 

Merci :).

+0

l'entrée à la fois temporaire et de l'échelle, puis 'if (((température <0) && (échelle == 'c')) || (température <32) && (échelle == 'f'))) {... solide ...} ' –

+0

merci beaucoup vous les gars :). Ca a marché pour moi et je l'ai trié maintenant merci :). –

Répondre

1

Vous devez détecter si l'entrée est Celsius ou Fahrenheit. Une façon est:

String str = input.nextString(); 
if (str.contains("F") || str.contains("f") { 
    //It's fahrenheit. process accordingly. 
} else { 
    //default to celsius. process accordingly. 
} 

Ce code reviendra à Celsius s'il ne détecte rien.

1

Vous cal toujours obtenir le dernier caractère et vérifier si c'est « C » ou « F »

string.substring(string.length() - 1) 

puis jeter le reste de la chaîne dans une variable int

espoir qui aide.

0

Essayez ceci:

//Get the input from user 
    String inputStr = input.nextLine(); 

    //Find the space 
    int indexOfSpace = inputStr.lastIndexOf(" "); 

    //Read the temperature value 
    int x = Integer.valueOf(inputStr.substring(0, indexOfSpace)); 

    //figure out the scale being used 
    String scale = inputStr.substring(indexOfSpace+1); 
    if(scale.equalsIgnoreCase("C")){ 
     //handle Celcius input 
    } else if(scale.equalsIgnoreCase("F")){ 
     //handle Fahrenheit input 
    } else{ 
     throw new IllegalArgumentException(); 
    } 
1

Voici une solution

public static void stateOfWater() { 
     System.out.println("Please enter a temperature value in Celcius or Fahrenheit : "); 
     Scanner s = new Scanner(System.in); 

     String[] argv = s.nextLine().split(" "); 

     int temp = Integer.parseInt(argv[0]); 
     char tempType = argv[1].charAt(0); 

     switch (tempType) { 
      case 'c': 
       if (temp <= 0) { 
        System.out.println("CELCIUS: Water is solid at " + temp); 
       } else if (temp >= 100) { 
        System.out.println("CELCIUS: Water is gaseous at " + temp); 
       } else { 
        System.out.println("CELCIUS: Water is liquid at " + temp); 
       } 
       break; 

      case 'f': 
       if (temp <= 32) { 
        System.out.println("FAHRENHEIT: Water is solid at " + temp); 
       } else if (temp >= 212) { 
        System.out.println("FAHRENHEIT: Water is gaseous at " + temp); 
       } else { 
        System.out.println("FAHRENHEIT: Water is liquid at " + temp); 
       } 
       break; 
     } 
    } 

Il y a un format spécifique à l'entrée, mais vous pouvez changer à votre goût.

entrée: 55 c sortie: CELCIUS: Water is liquid at 55

Ici vous pouvez voir où nous diviser la chaîne en utilisant un séparateur et affecter le type de température, et la température elle-même.

processus
String[] argv = s.nextLine().split(" "); 

int temp = Integer.parseInt(argv[0]); 
char tempType = argv[1].charAt(0);