切换if if,else if,else,并在case内循环

时间:2012-10-25 02:42:37

标签: java

出于我的问题的目的,我只包括案例1,但其他案例是相同的。假设value当前为1,我们转到case 1,我们的for循环遍历数组,看看每个元素是否与whatever_value变量匹配。在这种情况下,如果确实如此,我们声明值变量等于2,并且我们打破了循环。问题是,当我突出显示另一个中断(在eclipse中)时,它表示中断也附加到for语句,但我只希望将for语句附加到if语句,而不是else if语句好。我想因为for语句没有括号,它只会为if语句循环,但eclipse会另外说(否则如果从0循环到数组长度)。

  switch (value) {
  case 1:
     for (int i = 0; i < something_in_the_array.length; i++)
        if (whatever_value == (something_in_the_array[i])) {
           value = 2;
           break;
        } else if (whatever_value == 2) {
           value = 3;
           break;
        } else if (whatever_value == 3) {
           value = 4;
           break;
        }
     break;
  case 2:

  // code continues....

5 个答案:

答案 0 :(得分:5)

你的问题.....我认为你的for循环包含了所有ifelse if的东西 - 就像一个声明一样,就像hoang nguyen指出的那样。

更改为此。请注意括号,表示for循环操作的代码块以及第一个else if更改为if

switch(value){

    case 1:
        for(int i=0; i<something_in_the_array.length;i++) {
            if(whatever_value==(something_in_the_array[i])) {
                value=2;
                break;
             }
        }

        if(whatever_value==2) {
            value=3;
            break;
        }
        else if(whatever_value==3) {
            value=4;
            break;
        }
        break;


    case 2:

code continues....

答案 1 :(得分:2)

  

但我只希望将for语句附加到if语句,而不是else if语句。

然后摆脱else。如果else if不应该是for的一部分,那么请将其写为:

           for(int i=0; i<something_in_the_array.length;i++)
                if(whatever_value==(something_in_the_array[i]))
                {
                    value=2;
                    break;
                }

           if(whatever_value==2)
           {
                value=3;
                break;  // redundant now
           }

           else if(whatever_value==3)
           {
                value=4;
                break;  // redundant now
           }

说完了:

  • 一点也不清楚你在这里真正想做什么,
  • 在循环中没有else部分似乎没有多大意义,
  • 很多人(包括我自己)认为总是使用大括号...这样人们在阅读代码时不会因错误的缩进而被绊倒。 (在这种情况下,它可能会帮助我们弄清楚你在这里真正要做的事情......)

最后,如果你把前括号放在前一行的末尾,那么大括号就不那么突兀; e.g。

  if (something) {
     doSomething();
  }

而不是:

  if (something) 
  {
     doSomething();
  }

答案 2 :(得分:2)

在这种情况下,我建议使用中断标签。

http://www.java-examples.com/break-statement

这样你就可以在for循环之外专门调用它。

答案 3 :(得分:2)

看起来像是一种家常的做事方式,但如果你必须...... 你可以根据自己的需要对其进行重组:

boolean found = false;

case 1:

for (Element arrayItem : array) {
    if (arrayItem == whateverValue) {
        found = true;    
    } // else if ...
}
if (found) {
    break;
}
case 2:

答案 4 :(得分:2)

如果您需要for语句仅包含if,则需要删除其else,如下所示:

for(int i=0; i<something_in_the_array.length;i++)
    if(whatever_value==(something_in_the_array[i]))
    {
        value=2;
        break;
    }

    /*this "else" must go*/
    if(whatever_value==2)
    {
        value=3;
        break;
    }

    else if(whatever_value==3)
    {
        value=4;
        break;
    }