2017-02-20 15 views
-1

Я пытаюсь проверить, является ли гендерный символ недопустимым, и если да, напечатать сообщение об ошибке, объясняющее требования к вводу, а затем завершение программы. Если пол действителен (M или F или m или f), продолжайте выполнение программы. Мне также нужно использовать оператор switch для переменной пола, чтобы определить, какую формулу использовать. Мой напечатанный дисплей должен выглядеть следующим образом:Java gender char недействителен

Высота взрослого ребенка составляет 5,58.

Высота должна отображаться с использованием printf() и в двух знаках после запятой.

Вот что я до сих пор не правильно вычислил.

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

В чем конкретная проблема, с которой вам нужна помощь? –

+0

спасибо! Мне нужно иметь сообщение об ошибке msg, объясняющее входные требования, если пользователь не вводит конкретно «M» «F», заканчивая программу. Если пол действителен, программа должна продолжить выполнение. Также конечный результат не отображается правильно, так как «Высота взрослого ребенка составляет 6,45». – Lisa

ответ

0

Ваш код имеет два оператора switch. Вы, вероятно, хотите один:

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

Если вы хотите иметь дело с проблемой недопустимого ввода, вы можете сделать это с футляром по умолчанию:

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 
} 

Теперь вы можете проверить, чтобы увидеть, если invalidInput было установите значение true, и если да, ответьте соответствующим образом.

+0

Большое вам спасибо за помощь! так что я сделал это, но я еще не изучил случай по умолчанию, то есть я не уверен, как объявить его выше (извините, я такой NOOB !!!) – Lisa

+0

Вот некоторая документация: https: // docs .oracle.com/javase/tutorial/java/nutsandbolts/switch.html –

0

У вас есть два оператора switch и нет чехла по умолчанию. Если вы хотите, чтобы пол работал с 'M', 'm', 'F', 'f', тогда пусть случай проваливается для аналогичных символов, т.е. M-m и 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

Большое вам спасибо! Я только что заметил изменения внизу! – Lisa