Java 在机箱内使用if、else if、else和循环进行切换
就我的问题而言,我只包括案例1,但其他案例都是相同的。假设当前值为1,我们转到案例1,for循环遍历数组,查看每个元素是否与任意_值变量匹配。在这种情况下,如果它是,我们将value变量声明为等于2,并中断循环。问题是,当我突出显示另一个中断(在eclipse中)时,它表示中断也附加到for语句,但我只希望for语句附加到if语句,而不是else if语句。我认为,因为for语句没有括号,所以它只会循环if语句,而eclipse则相反(elseif也从0循环到数组长度)Java 在机箱内使用if、else if、else和循环进行切换,java,Java,就我的问题而言,我只包括案例1,但其他案例都是相同的。假设当前值为1,我们转到案例1,for循环遍历数组,查看每个元素是否与任意_值变量匹配。在这种情况下,如果它是,我们将value变量声明为等于2,并中断循环。问题是,当我突出显示另一个中断(在eclipse中)时,它表示中断也附加到for语句,但我只希望for语句附加到if语句,而不是else if语句。我认为,因为for语句没有括号,所以它只会循环if语句,而eclipse则相反(elseif也从0循环到数组长度) 开关(值){ 案例1:
开关(值){
案例1:
for(int i=0;i你的问题…..我认为你的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:
对于(int i=0;i
但是我只希望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
}
而不是:
if (something)
{
doSomething();
}
在这种情况下,我建议使用断开标签
通过这种方式,您可以在for循环之外专门调用它。似乎是一种家常的做事方式,但如果您必须。。。
您可以根据自己的需要对其进行重组:
boolean found = false;
case 1:
for (Element arrayItem : array) {
if (arrayItem == whateverValue) {
found = true;
} // else if ...
}
if (found) {
break;
}
case 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;
}
for(int i=0;iSmall)一条建议:不要混合制表符和空格。这会破坏格式,你可以清楚地看到。因为for语句也会循环else if语句,我不想循环,但不知道如何循环,所以只有if语句循环。因此,它不会循环数组的长度(如果else IF语句匹配),我插入了一个中断。如果else-if语句不匹配,它仍然循环else-if语句整个数组的长度。这很混乱,我的代码也很混乱,我明白。我的问题是如何使它只循环if语句,而不是循环else-if-get。哦!谢谢,这就是你要做的,我尝试将if-st括起来for循环的一个元素,但如果连接到if,它不允许我对else执行操作。但是,如果我对循环单独执行if语句,我将按照您所示的方式工作。谢谢!@eboix-“//这与else if非常相似,因为如果前一个if语句被连接,它将不会执行。”-不正确。for
循环中的break
将中断到循环的末尾。执行的下一个语句将是下面的if
语句!!@StephenC我在想什么……你完全正确。我甚至不知道我是如何被提升的:PCool解决方案!我直到今天才知道这些存在,我一直都是5年以上Java编程经验。
boolean found = false;
case 1:
for (Element arrayItem : array) {
if (arrayItem == whateverValue) {
found = true;
} // else if ...
}
if (found) {
break;
}
case 2:
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;
}