This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Không thể sử dụng hàm switch-case với kiểu dữ liệu String?

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);
}

}
}
}
 

Handrf

Kiếm đá
Do bạn thiếu
Mã:
break;
ở cuối mỗi case. Mặc định khi 1 case thoả mãn thì nó sẽ vào case đấy và tất cả case bên dưới dù các case bên dưới có thoả mãn điều kiện hay k. Bạn chạy thử ví dụ của mình bên dưới, để ý case 1 của mình có break.

Java:
public class Main {

    public static void main(String[] args) {
        int[] a = new int[]{4,3,2,1};
        for (int x : a) {
            testSc(x);
            System.out.println("___________");
        }
    }

    public static void testSc(int x) {
        switch (x) {
            case 1:
                System.out.println(">> 1");
                break;
            case 2:
                System.out.println(">> 2");
            case 3:
                System.out.println(">> 3");
            default:
                System.out.println(">> n");
        }
    }

}