Java switch语句中的多个/重复个案

时间:2011-08-11 21:03:46

标签: java switch-statement multiple-instances

我想知道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再次?:是的!执行此代码; 没有更多案例:全部完成!“)

4 个答案:

答案 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