對於標題我很抱歉,我不知道該怎麼稱呼它。如果在switch語句中禁用子句,該怎麼辦?
我的問題是這樣的,我有一個隨機選擇問題類型爲這樣的switch語句:
questionType[count] = rad.nextInt(4);
switch (questionType[count])
{
case 0:
questionArray[count] = new Times(count + 1);
((Times) questionArray[count]).askQuestion(question);
break;
case 1:
questionArray[count] = new Add(count + 1);
((Add) questionArray[count]).askQuestion(question);
break;
case 2:
questionArray[count] = new Minus(count + 1);
((Minus) questionArray[count]).askQuestion(question);
break;
case 3:
questionArray[count] = new Divide(count + 1);
((Divide) questionArray[count]).askQuestion(question);
break;
}
這樣做是隨機選擇一個問題,然後將其添加到下一個陣列,這裏是pesudocode版本:
questionType = random(4)
case questionType == 0
do something
break
case questionType == 1
do something
break
case questionType == 2
do something
break
case questionType == 3
do something
break;
現在可以說,我不希望任何爲1或2的,我怎麼把那個生效?我正沿着這個線路思考的東西:
START:
questionType = random(4)
case questionType == 0
if(0 enabled)
{
do something
break
}
case questionType == 1
if(1 enabled)
{
do something
break
}
case questionType == 2
if(2 enabled)
{
do something
break
}
case questionType == 3
if(3 enabled)
{
do something
break;
}
else goto start
但是,這是非常低效的代碼,並使用一個goto,有什麼辦法?
難道你不只是在switch語句之前進行檢查,而不是檢查每種情況下是否啓用? – 2012-02-15 15:58:16
我可以,但除非我爲每個組合做了switch語句,否則這些用法都沒有多大用處。 – Derek 2012-02-15 15:59:39
我不認爲我完全清楚你想要完成什麼。但是,如果將switch語句移至返回布爾值的方法(如果它添加了一個問題或者「執行某些操作」,則返回true,否則爲false)會怎麼樣?然後,您可以循環並調用該方法,直到完成(沒有足夠的信息告訴您要檢查的內容)。請注意,從您的代碼,但如果你循環嘗試隨機數字試圖獲得啓用問題,你可能會遇到問題... – 2012-02-15 16:12:18