[英]Syntax for switch-case in Java
我第一次在Java中使用switch case,但對語法不確定。 假設setTeamName函數可以正常工作,下面的函數會使數組中的所有團隊都使用占位符String作為名稱,還是我應該從案例0開始:因為我從0開始?
public static Team[] makeTeams(){
Team[] teams = new Team[10];
for(int i = 0; i < teams.length; i++){
switch(i){
case 1: teams[0].setTeamName("Arsenal");
case 2: teams[1].setTeamName("Arsenal");
case 3: teams[2].setTeamName("Arsenal");
case 4: teams[3].setTeamName("Arsenal");
case 5: teams[4].setTeamName("Arsenal");
case 6: teams[5].setTeamName("Arsenal");
case 7: teams[6].setTeamName("Arsenal");
case 8: teams[7].setTeamName("Arsenal");
case 9: teams[8].setTeamName("Arsenal");
case 10: teams[9].setTeamName("Arsenal");
}
}
return teams;
}
在每條指令后使用break語句,以防萬一。
您的case
語句必須從0
開始,因為正如您正確地觀察到的那樣, i
從零開始。 但是,這似乎是最少的問題(除非這只是使用switch case
一種練習)。
在這種情況switch case
,您根本不需要switch case
。 另外,您永遠不會在數組中創建任何對象,因此,每次嘗試在特定索引處訪問數組時,您都將獲得null引用異常。 以下內容就足夠了:
Team[] teams = new Team[10];
for (int i = 0; i < teams.length; i++) {
teams[i] = new Team();
teams[i].setTeamName("Arsenal");
}
您在原始示例中實際上得到的是一個反模式示例,即Loop-switch sequence 。 如果您希望原始示例使用此反模式正常工作(僅用於教育目的),則需要添加break;
語句,以確保您的案例語句不會出現以下情況:
Team[] teams = new Team[10];
for (int i = 0; i < teams.length; i++) {
teams[i] = new Team();
switch (i) {
case 0: teams[0].setTeamName("Arsenal"); break;
case 1: teams[1].setTeamName("Arsenal"); break;
case 2: teams[2].setTeamName("Arsenal"); break;
case 3: teams[3].setTeamName("Arsenal"); break;
case 4: teams[4].setTeamName("Arsenal"); break;
case 5: teams[5].setTeamName("Arsenal"); break;
case 6: teams[6].setTeamName("Arsenal"); break;
case 7: teams[7].setTeamName("Arsenal"); break;
case 8: teams[8].setTeamName("Arsenal"); break;
case 9: teams[9].setTeamName("Arsenal"); break;
}
}
沒有中斷,將評估與i
匹配的條件下的每個case語句,例如,當i == 0
,將執行所有case語句。
您正在做很多不必要的工作。 嘗試
public static Team[] makeTeams(){
Team[] teams = new Team[10];
for(int i = 0; i < teams.length; i++){
teams[i] = new Team();
teams[i].setTeamName("Arsenal");
}
return teams;
}
您確實可以選擇填充數組,但是如果您的任務要求您僅使用switch
則從case 0
而不是1開始,因為0是您遇到的“第一個” case
。
您真的需要在這里切換嗎? for
循環就足夠了。
切換只是將執行移至案例行,下一次忽略另一個案例。 因此,當您給i = 1切換時,將執行所有case語句。 您可以使用break;
來防止它break;
switch (i) {
case 1:
teams[0].setTeamName("Arsenal");
break;
case 2:
teams[1].setTeamName("Arsenal");
break;
}
您的代碼中幾乎沒有錯誤:
1)您沒有大小寫0,因此不使用它。 建議始終使用默認情況。
2)每種情況都應以休息的方式結束; 否則,以下所有情況也將執行。 例如,對於案例9,這些案例稱為9和10。對於案例1,所有10個案例都已被調用。 (但對於代碼中的情況0,則不會調用)。
3)您保留了由10個團隊組成的數組,但沒有在該數組中填充對象。 您的代碼將產生空指針異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.