伊莉討論區
標題: switch 可用字串嗎? [打印本頁]
作者: beyle 時間: 2013-8-12 03:02 PM 標題: switch 可用字串嗎?
例如:
import java.util.Scanner;
public class Switch {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please enter a command :");
String text = input.nextLine();
switch (text)
{
case "start" : System.out.println("Machine start.");
break;
case "stop" : System.out.println("Machine stop.");
break;
default : System.out.println("machine stand by..");
}
}
}
我用字串(text) 來放入switch 中⋯⋯
作者: snowflying 時間: 2013-8-12 03:48 PM
Convertible int values , strings , enum variables 都可以
Convertible int values 包含 char , byte , short , long
strings 支援似乎是在 SE7 ,所以要看版本
舊版的可能不行
作者: ddttdtxb 時間: 2013-8-14 07:13 AM
如同其它大大在其它文章的回應, Java 到 1.7 (或叫 Java 7)之後才支援 String 的 switch 作法。自己之前也為這種事情困擾許久,發現字串只能使用 equals() 來判斷,為此曾經寫過許多 if...else 語句。或是將內容改成數字,在後面加上註解,因為總覺得傳入的資料不如文字那麼讓人容易了解。
不過後來發現其它人的作法,是將要放入 switch 判斷的資料,用數字常數的方式處理。以樓主的例子,會建立像是以下的常數…- public static final int START = 1;
- public static final int STOP = 0;
複製代碼 這樣 swtich 也就可以改寫成…- switch (param) // param 是 int
- {
- case START :
- System.out.println("Machine start.");
- break;
- case STOP :
- System.out.println("Machine stop.");
- break;
- default :
- System.out.println("machine stand by..");
- }
複製代碼 如果真的只能使用字串,也建議將它們放到常數中。
這樣其它程式在呼叫的時候,也能夠使用常數,讓編譯在編譯時為你檢查,避免不免要的問題,像是拼錯字或是大小寫打錯。
作者: BlueMarken 時間: 2013-8-16 09:10 AM
提示: 作者被禁止或刪除 內容自動屏蔽
作者: henry4343 時間: 2013-8-28 09:38 AM
提示: 作者被禁止或刪除 內容自動屏蔽
作者: i1313677 時間: 2013-8-28 11:44 AM
提示: 作者被禁止或刪除 內容自動屏蔽
作者: louisz6ster 時間: 2013-8-30 08:15 PM
另外補充一下也可以使用enum方式搭配switch也是個方式之一,只是變複雜了點。
作者: kevin19900125 時間: 2013-9-1 10:45 PM
提示: 作者被禁止或刪除 內容自動屏蔽
作者: bluewingx 時間: 2013-9-11 04:54 PM
我之前原本是在1.7版寫的,本來還很意外為什麼switch可以用String,
後來有一次重安裝後,裝到1.6版,再跑的時候就不能執行,
找了很久才發現1.7版才有支援switch(String),結果變的我要重新修改好多地方的switch,
當然更新到1.7就可以了,不過如果不麻煩的話,還是盡量用數值去判斷。
作者: craiglam 時間: 2013-9-15 02:33 PM
我只知道是支援char的data type, string好像不能吧
作者: lang201 時間: 2013-9-18 01:06 AM
提示: 作者被禁止或刪除 內容自動屏蔽
作者: zzxc12345 時間: 2013-9-19 02:59 AM
原來1.7已經支援String, 記得1.6時還是用If或enum做的
作者: carlosc 時間: 2013-9-25 11:37 AM
提示: 作者被禁止或刪除 內容自動屏蔽
歡迎光臨 伊莉討論區 (http://aaa.eyny.com/) |
Powered by Discuz! |