Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在机箱内使用if、else if、else和循环进行切换_Java - Fatal编程技术网

Java 在机箱内使用if、else if、else和循环进行切换

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,但其他案例都是相同的。假设当前值为1,我们转到案例1,for循环遍历数组,查看每个元素是否与任意_值变量匹配。在这种情况下,如果它是,我们将value变量声明为等于2,并中断循环。问题是,当我突出显示另一个中断(在eclipse中)时,它表示中断也附加到for语句,但我只希望for语句附加到if语句,而不是else if语句。我认为,因为for语句没有括号,所以它只会循环if语句,而eclipse则相反(elseif也从0循环到数组长度)

开关(值){
案例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;
    }