簡體   English   中英

切換if if,else if,else,並在case內循環

[英]Switch with if, else if, else, and loops inside case

出於我的問題的目的,我只包括案例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....

你的問題.....我認為你的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....

但我只希望將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();
  }

在這種情況下,我建議使用中斷標簽。

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

這樣你就可以在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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM