2017-09-06 2 views
0

Je n'arrive pas à faire fonctionner mon code correctement. J'ai besoin de trouver la surface du carré et d'ajouter les unités de mesure en fonction de ce que l'utilisateur utilise soit en pouces, m en mètres, cm en centimètres et pieds en pieds.Caractère constant non valide lors de l'utilisation du commutateur/boîtier?

public static void main (String[] args) 
{ 

// create scanner to read the input 

     Scanner sc = new Scanner(System.in); 

//prompt the user to enter one side of the length 

     System.out.println("Enter one side of lenght of the square:"); 

     double side1 = sc.nextDouble(); 

     while (side1 < 0) 

     { 
//prompt the user to enter the input again in a positive value 

      System.out.println("Error, No Negative Number. Enter again:"); 

      side1 = sc.nextDouble(); 
     } 
char unitsMeasurement; 
// prompt the user to enter the measurement unit 
char units = Character.toUpperCase(status.charAt(0)); 
String unitsMeasurement = ""; 

    **{ 
     switch(units) 
     { 
     case "in": 
      unitsMeasurement = "inch"; break; 
     case "cm": 
      unitsMeasurement = "centimeter"; break; 
     case "ft": 
      unitsMeasurement = "feet"; break; 
     case "m": 
      unitsMeasurement = "meter"; break; 

     default:System.out.println("Invaild unit"); break; 
         }** 


//Area of Square = side*side 

      double area = side1*side1; 


     **System.out.println("Area of Square is: "+area, +unitsMeasurement+);** 

     } 

    } 
} 
+0

S'il vous plaît inclure l'erreur que vous avez rencontré dans le texte de la question. Assurez-vous que c'est le message d'erreur exact. D'après le titre, je pense que vous avez peut-être manqué d'importer un paquet java. Essayez d'ajouter import java.lang. *; – Digits

Répondre

1

Votre principal problème est que vous utilisez un commutateur au cas d'une déclaration sur char alors que tous vos cas sont basées sur un String. Cela ne fonctionne pas ensemble. Certains autres problèmes sont que status n'est jamais défini, donc units ne peut pas avoir de valeur du tout.

Je ne suis pas sûr de ce que vous essayez d'atteindre, mais je suppose ce qui suit: L'utilisateur saisit la longueur d'un carré avec une unité (en abrégé). Le programme calcule la surface du carré et la sort avec l'unité (non abrégée).

entrée de l'échantillon:

5cm 

Exemple de sortie:

Area of square is: 25 centimeter^2 

Gardez à l'esprit qu'une zone a une unité de longueur au carré!

Sur cette base, voici un code de travail:

public static void main (String[] args) { 

    // create scanner to read the input 
    Scanner sc = new Scanner(System.in); 

    //prompt the user to enter one side of the length 
    System.out.println("Enter one side of lenght of the square:"); 
    String input = sc.nextLine(); 

    //Remove anything but digits 
    double side1 = Double.parseDouble(input.replaceAll("\\D+","")); 
    //Remove all digits 
    String unit = input.replaceAll("\\d",""); 
    System.out.println(side1); 
    System.out.println(unit); 

    while (side1 < 0) { 
     //prompt the user to enter the input again in a positive value 
     System.out.println("Error, No Negative Number. Enter again:"); 
     input = sc.nextLine(); 

     //Remove anything but digits 
     side1 = Double.parseDouble(input.replaceAll("\\D+","")); 
    } 

    switch(unit) { 
     case "in": 
      unit = "inch"; 
      break; 
     case "cm": 
      unit = "centimeter"; 
      break; 
     case "ft": 
      unit = "feet"; 
      break; 
     case "m": 
      unit = "meter"; 
      break; 

     default: 
      System.out.println("Invaild unit"); 
      break; 
    } 

    double area = side1*side1; 
    System.out.println("Area of Square is: " + area + " " + unit + "^2"); 
}