对于标题我很抱歉,我不知道该怎么称呼它。如果在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