2017-02-20 4 views
-1

Ich versuche zu testen, ob der Geschlecht Char ungültig ist und wenn ja, eine Fehlermeldung zu drucken, die die Eingabeanforderungen erklärt und dann das Programm beendet. Wenn das Geschlecht gültig ist (M oder F oder m oder f), fahren Sie mit der Ausführung des Programms fort. Ich muss auch eine switch-Anweisung für die Variable gender verwenden, um zu bestimmen, welche Formel verwendet werden soll. Mein gedrucktes Display sollte lauten:Java Geschlecht Char ungültig

Die Erwachsenengröße des Kindes wäre 5,58.

Die Höhe sollte mit printf() und in 2 Dezimalstellen angezeigt werden.

Hier ist, was ich bisher habe, dass nicht richtig berechnet.

import java.util.Scanner; 
public class Workshop3GenderModification { 

public static void main(String[] args) { 

// TODO Auto-generated method stub 
int gender; 
gender = 'M'; 
gender = 'F'; 

double cheight=0; 

Scanner input = new Scanner(System.in); 

//father height 

System.out.print("Enter your father height in feet "); 
int ffeet=input.nextInt(); 

System.out.print("Enter father height in inches "); 
int finches=input.nextInt(); 

//mother height 
System.out.print("Enter mother height in feet "); 
int mfeet=input.nextInt(); 

System.out.print("Enter mother height in inches "); 
int minches=input.nextInt(); 

int mheight = mfeet * 12 + minches; 
int fheight = ffeet * 12 + finches; 

// child gender 

System.out.print("Enter M for male or F for female "); 
gender = input.next().charAt (0); 
// male or female 
input.nextLine(); 

switch (gender){ 
    case 'M': 
    cheight =(int)((fheight * 13/12.0)+ mheight)/2; 
    break; 
} 

switch (gender){ 
    case 'F' : 
    cheight =(int)((mheight * 12/13.0) + fheight)/2 ; 
    break; 
} 

int cfeet= (int)cheight/12; 
int cinched= (int)cheight%12; 
double aheight=(cfeet/cinched); 
System.out.print(cfeet +"'" + cinched + "\""); 
System.out.printf("will be the adult child's height" +"%.2f", aheight); 
    } 
} 
+0

Was ist das spezifische Problem, mit dem Sie Hilfe benötigen? –

+0

danke! Ich benötige eine Fehlermeldung, die die Eingabeanforderungen erklärt, wenn ein Benutzer nicht spezifisch "M" "F" eingibt, das das Programm beendet. Wenn das Geschlecht gültig ist, sollte das Programm weiter ausgeführt werden. Auch die endgültige Ausgabe wird nicht korrekt angezeigt, da "die Erwachsenengröße des Kindes 6,45" wäre. – Lisa

Antwort

0

Ihr veröffentlichter Code enthält zwei Switch-Anweisungen. Sie wollen wahrscheinlich ein:

switch (gender){ 
    case 'M': 
    cheight =(int)((fheight * 13/12.0)+ mheight)/2; 
    break; 
    case 'F' : 
    cheight =(int)((mheight * 12/13.0) + fheight)/2 ; 
    break; 
} 

Wenn Sie mit dem Problem der ungültigen Eingabe beschäftigen möchten, können Sie dies mit einer Standard-Fall tun könnte:

switch (gender){ 
    case 'M': 
    cheight =(int)((fheight * 13/12.0)+ mheight)/2; 
    break; 
    case 'F' : 
    cheight =(int)((mheight * 12/13.0) + fheight)/2 ; 
    break; 
    default: 
    invalidInput = true; // you'll want to declare this above and 
         // initialize it to false 
} 

Jetzt können Sie überprüfen, um zu sehen, ob invalidInput gewesen auf wahr gesetzt, und wenn ja, antworte angemessen.

+0

Vielen Dank für Ihre Hilfe! also habe ich das gemacht, aber ich habe den Standardfall noch nicht gelernt, was bedeutet, dass ich nicht sicher bin, wie ich es oben deklarieren soll (sorry, ich bin so ein NOOB !!!) – Lisa

+0

Hier ist eine Dokumentation: https: // docs .oracle.com/javase/tutorial/java/nutsandbolts/switch.html –

0

Sie haben zwei Schalteranweisungen und keinen Standardschalterfall. Wenn Sie nur wollen, dass das Geschlecht mit "M", "m", "F", "f" arbeitet, dann lassen Sie den Fall für ähnliche Zeichen durch, dh. M-m und F-f.

switch(gender) { 
    case 'M': 
    case 'm': 
     cheight =(int)((fheight * 13/12.0)+ mheight)/2; 
     break; 
    case 'F': 
    case 'f': 
     cheight =(int)((mheight * 12/13.0) + fheight)/2; 
     break; 
    default: 
     System.exit(0); // stop process 
     break; 
} 

// if a F, f, M, or m were not entered, this will never be reached 
NumberFormat nm = new DecimalFormat("#0.00"); 
System.out.println("output: " + nm.format(cheight)); 
+0

Vielen Dank! Ich habe gerade die Änderungen am unteren Rand bemerkt! – Lisa