我想知道Java如何处理同一个案例的多个相同实例。 从概念上讲,我认为以下内容是有道理的:
switch (someIntegerValue)
{
case 1:
case 2:
DoSomethingForBothCases();
break;
case 3:
DoSomethingUnrelated();
break;
case 1:
DoSomethingForCase1ThatReliesUponExecutionOfTheEarlierFunctionCall();
break;
case 2:
DoSomethingForCase2ThatReliesUponExecutionOfTheEarlierFunctionCall();
break;
}
基本上,我希望为案例1或2(使用直通)执行一大块代码,但稍后,只为案例2执行一段代码。
相反,以下是必要的,而不是?
switch (someIntegerValue)
{
case 1:
DoSomethingForBothCases();
DoSomethingForCase1ThatReliesUponExecutionOfTheEarlierFunctionCall();
break;
case 2:
DoSomethingForBothCases();
DoSomethingForCase2ThatReliesUponExecutionOfTheEarlierFunctionCall();
break;
case 3:
DoSomethingUnrelated();
break;
}
我的实际代码更复杂,但会使用相同的原则(例如“案例1 :nope;好吧...... 案例2 :是的!执行这段代码!; 案例3 :nope; 案例1再次?:仍然没有!; 案例2再次?:是的!执行此代码; 没有更多案例:全部完成!“)
答案 0 :(得分:5)
两个switch语句有什么问题?
switch (someIntegerValue) {
case 1:
case 2:
DoSomethingForBothCases();
break;
case 3:
DoSomethingUnrelated();
break;
}
switch (someIntegerValue) {
case 1:
DoSomethingForCase1ThatReliesUponExecutionOfTheEarlierFunctionCall();
break;
case 2:
DoSomethingForCase2ThatReliesUponExecutionOfTheEarlierFunctionCall();
break;
}
这就是我要做的事。
答案 1 :(得分:1)
您不能在Java switch语句中重复这种情况,这是一个编译错误。你需要按照你的建议去做,这实际上看起来很合理。
答案 2 :(得分:0)
你将无法做到。你不能有重复的情况,编译器将抛出一个他的合适的大声笑。我理解你的逻辑,你想检查每个案例,然后继续检查其他情况,但是break语句会把你拉出switch-case语句。如果你想连续检查不同的东西,我建议你考虑使用一个循环(即for,while)。使用循环耦合if语句将帮助您在其他语句之前执行代码位。
或者如果你真的喜欢switch语句,你可以创建多个switch-cases,以便某些事情发生在其他人之前。
答案 3 :(得分:0)
怎么样? 注意:我不知道那么多Java,只有Swift 2
var someIntegerValue = 1
func someSwitch(){
switch (someIntegerValue) {
case 1:
break;
case 2:
DoSomethingForBothCases();
break;
case 3:
DoSomethingUnrelated();
break;
}
}
您有两个按钮操作,
某些操作按钮下一步
someIntegerValue +=1 // changes someIntegerValue to next case
someIntegerValue() //loads switch
某些操作按钮2返回
someIntegerValue -=1 // changes someIntegerValue to next case
someIntegerValue() //loads switch