今天的學習筆記中,遇到了一個很奇妙的問題,想要跟大家來分享一下,
那就是舊版的Java的SWITCH語法並不支援String(字串),只有支援數字,
只有新版本的才有支援,但是我的電腦是安裝舊版的,只好將這問題處理掉囉。
以下為舊版無法執行的程式碼
 public static void main(String[] args) {
       Scanner scn = new Scanner(System.in);
       int num1 = 36, num2 = 12;
       String sel="A";
       do {
           System.out.println("****** 運算選單 ******");
           System.out.println("\tA. 加(+)");
           System.out.println("\tB. 減(-)");
           System.out.println("\tC. 乘(*)");
           System.out.println("\tD. 除(/)");
           System.out.println("\tE. 離開系統");
           System.out.println("*********************");
           do {
               System.out.print("請選擇功能: ");
               sel = scn.next().toUpperCase();
               }
           while ("ABCDE".indexOf(sel) == -1);
       switch (sel) 
       {       
       case "A":
           System.out.printf(" %d + %d = %d%n", num1, num2, num1+num2);
           break;
       case "B":
           System.out.printf(" %d - %d = %d%n", num1, num2, num1-num2);
           break;
       case "C":
           System.out.printf(" %d * %d = %d%n", num1, num2, num1*num2);
           break;
       case "D":
           System.out.printf(" %d / %d = %d%n", num1, num2, num1/num2);
           break;
       case "E":
           System.out.println("結束程式");
       }
    }
       while (!(sel.equals("E")));
   }
}
以下為可在舊版執行之程式碼
package untitled9;
import java.util.Scanner;
public class Untitled2 {
    public static void main(String[] args) {
       Scanner scn = new Scanner(System.in);
       int num1 = 36, num2 = 12;
       String fruit;  
       do {
           System.out.println("****** 運算選單 ******");
           System.out.println("\tA. 加(+)");
           System.out.println("\tB. 減(-)");
           System.out.println("\tC. 乘(*)");
           System.out.println("\tD. 除(/)");
           System.out.println("\tE. 離開系統");
           System.out.println("*********************");
           do {
               System.out.print("請選擇功能: ");
               fruit = scn.next().toUpperCase();
               }
           while ("ABCDE".indexOf(fruit) == -1);
       {
       if (fruit.equals("A"))
               System.out.printf(" %d + %d = %d%n", num1, num2, num1+num2);
       if (fruit.equals("B"))
              System.out.printf(" %d - %d = %d%n", num1, num2, num1-num2);
       if (fruit.equals("C"))
              System.out.printf(" %d * %d = %d%n", num1, num2, num1*num2);
       if (fruit.equals("D"))
              System.out.printf(" %d / %d = %d%n", num1, num2, num1/num2); 
     }
   }
       while (!(fruit.equals("E")));
       System.out.println("結束程式");
  }
}
其實兩個程式碼的部份並沒有多大的差異,只是在於版本上要有認知,
不要像我這麼菜都不知道版本上有無支援此用法的關係。
兩個程式碼的差異在於我將Switch語法改寫成If,
讓每段程式碼都去判斷,但我有請教網路上一下高手們,
都不建議這麼做,因為說是會比較吃資源而且是笨方法XD。