1. 程式人生 > >java中的switch使用 case expressions must be constant expressions,Duplicate case

java中的switch使用 case expressions must be constant expressions,Duplicate case

java中的switch問題,有時報告case expressions must be constant expressions,原因是缺少final;另外如果報告:Duplicate case,則是switch中的case值重複,用Java寫時,不會像c一樣,case是什麼值都直接寫出來,有時是類名.成員變數,如果成員變數沒有定義好,則有可能會導致重複。



/**
 * case expressions must be constant expressions,Duplicate case
 * @author Sherlock
 *
 */

class Data{
	 public final static int data_3 = 3;
	 public final int data_4 = 4;
}


public class test{
	/**
	 * 本類中的成員變數用於switch必須是final和static.
	 */
	public final static int inClassVariable = 1;
	
	public void testSwitch(){
	    //方法中的變數用於switch必須是final
	    final int inWayVariable = 1;
 	    int test = 1;
 	    switch(test){
	       case inWayVariable : {
                   System.out.println("inWayVariable");
	       }
	    }
	}
	
	public static void main(String[] args){
		//main方法中變數用於switch必須是final
		final int inMainVariable = 2;
		int test = 1;
		switch(test){
			case inClassVariable : {
				System.out.println("inClassVariable");
				break;
			}
			case inMainVariable : {
				System.out.println("inMainVariable");
				break;
			}
			case Data.data_3 : {
				System.out.println("Data.data_3");
			}
		}
	}

}

ps:以前一直學C,然後學了一年多的java,老是有個這樣的觀點,要寫演算法就只能寫C,導致對於某一個問題,在語言的選擇上浪費太多時間。不知道是不是錯的,反正,現在想改成什麼都用java寫,java也可以acm,為什麼我就不能用java寫跟演算法有關的東西。好,我要把以前的都用Java全部實現一遍。錯就錯吧