出于我的问题的目的,我只包括案例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....
答案 0 :(得分:5)
你的问题.....我认为你的for循环包含了所有if
,else 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)
答案 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;
}