JonhDTL
Gà con
Anh chị nào chỉ em với, tại sao em không thể sử dụng swich-case cho kiểu dữ liệu String ạ.
Cụ thể em viết như bên dưới, khi nhập sex vào thì nó chạy cả Male và Femal.
Có anh chị nào hướng dẫn em cách sử dụng trong trường hợp này để phân biệt Male và Female khi nhập từ bàn phím không ạ?
public class TinhBMI {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Name: ");
String name = sc.nextLine();
System.out.println("Sex: ");
String sex = sc.nextLine();
System.out.println("Weight (kg): ");
double weight;
weight = sc.nextFloat();
System.out.println(" (m): ");
double high;
high = sc.nextFloat();
double BMI = weight / Math.pow(high, 2);
System.out.println(BMI);
switch (sex) {
case "Male": {
String bmiM = (BMI < 20) ? "Thin" : (20 <= BMI && BMI < 25) ? "Normal" : "Overweight";
System.out.println(bmiM);
}
case "Female": {
String bmiF = (BMI < 18.5) ? "Thin" : (18.5 <= BMI && BMI < 25) ? "Normal" : "Overweight";
System.out.println(bmiF);
}
}
}
}
Cụ thể em viết như bên dưới, khi nhập sex vào thì nó chạy cả Male và Femal.
Có anh chị nào hướng dẫn em cách sử dụng trong trường hợp này để phân biệt Male và Female khi nhập từ bàn phím không ạ?
public class TinhBMI {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Name: ");
String name = sc.nextLine();
System.out.println("Sex: ");
String sex = sc.nextLine();
System.out.println("Weight (kg): ");
double weight;
weight = sc.nextFloat();
System.out.println(" (m): ");
double high;
high = sc.nextFloat();
double BMI = weight / Math.pow(high, 2);
System.out.println(BMI);
switch (sex) {
case "Male": {
String bmiM = (BMI < 20) ? "Thin" : (20 <= BMI && BMI < 25) ? "Normal" : "Overweight";
System.out.println(bmiM);
}
case "Female": {
String bmiF = (BMI < 18.5) ? "Thin" : (18.5 <= BMI && BMI < 25) ? "Normal" : "Overweight";
System.out.println(bmiF);
}
}
}
}