6

出于我的问题的目的,我只包括了案例 1,但其他案例是相同的。假设 value 当前为 1,我们转到案例 1,我们的 for 循环遍历数组以查看每个元素是否与whatever_value 变量匹配。在这种情况下,如果确实如此,我们将 value 变量声明为等于 2,然后跳出循环。问题是,当我突出显示另一个中断(在 Eclipse 中)时,它表示中断也附加到 for 语句,但我只希望将 for 语句附加到 if 语句,而不是 else if 语句出色地。我认为因为 for 语句没有括号,所以它只会循环 if 语句,但 eclipse 另有说明(否则 if 也会从 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....
4

5 回答 5

11

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

改成这个。请注意表示 for 循环运行的代码块的括号以及第一个更改else ifif.

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....
于 2012-10-25T02:49:24.837 回答
3

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

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

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

于 2012-10-25T02:52:38.910 回答
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循环中的部分在这里似乎没有多大意义,
  • 很多人(包括我自己)认为总是使用大括号......这样人们在阅读代码时就不会被不正确的缩进绊倒。(在这种情况下,它可能会帮助我们弄清楚你在这里真正想要做什么......)

最后,如果将左大括号放在前一行的末尾,大括号就不那么突兀了;例如

  if (something) {
     doSomething();
  }

而不是:

  if (something) 
  {
     doSomething();
  }
于 2012-10-25T02:52:28.927 回答
2

似乎是一种家常便饭的做事方式,但是如果您必须...您可以对其进行重组以满足您的需求:

boolean found = false;

case 1:

for (Element arrayItem : array) {
    if (arrayItem == whateverValue) {
        found = true;    
    } // else if ...
}
if (found) {
    break;
}
case 2:
于 2012-10-25T02:52:46.353 回答
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;
    }
于 2012-10-25T02:52:58.723 回答