熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java跳出多層循環的簡單方法

2013-11-23 18:50:56  來源: Java核心技術 

  在Java程序中可能使用多層循環來處理復雜的邏輯但如果要從最內層循環 跳出最外層循環是比較麻煩下面的代碼是一個三層循環的例子

  String[] arr= new String[]{a b

  c};

  for(String s: arr)

  {

  for(String ss: arr)

  {

  for(String sss: arr)

  {

  Systemoutprintln(sss);

  }

  }

  }

  如果要從第三層循環跳出第一層循環可以通過設置標志的方法來實現但 這比較麻煩當然如何使用過C或C++的開發人員可以想到使用goto語句如下 面的代碼所示

  String[] arr= new String[]{a b

  c};

  for(String s: arr)

  {

  for(String ss: arr)

  {

  for(String sss: arr)

  {

  Systemoutprintln(sss);

  goto label;

  }

  }

  }

  label:雖然上面的代碼看似可行不過Java雖然還有goto關鍵字但這個關鍵字卻 不能使用(Java編譯器會拋出異常)不過Java還提供了另外一種類似goto的解 決方案這就是break n和continue n其中n表示標簽名只是在Java中只能在 forwhiledowhile三種循環語句前面定義標簽與循環體之間不能有任何 其他的語句如下面的標簽定義是合法的

  label: //定義標簽

  for(int i=;i<;i++)

  {

  

  }

  下面的標簽定義是不合法的

  label: //定義標簽

  Systemoutprintln(abcd); //此處不能有任何Java語句

  for(int i=;i<;i++)

  {

  

  }

  使用break n跳出多層循環的代碼如下

  labelA:

  for(String s: arr)

  {

  for(String ss: arr)

  {

  for(String sss: arr)

  {

  Systemoutprint(sss);

  break labelA;

  }

  }

  }

  上面的代碼只輸出了一個a在第三層使用break labelA可以理解為如下的代 碼形式(雖然這段代碼並不符合Java語法規則)

  for(String s: arr)

  {

  for(String ss: arr)

  {

  for(String sss: arr)

  {

  Systemoutprint(sss);

  goto labelA;

  }

  }

  }

  labelA:當然還可以使用continue labelA繼續執行某一層的循環代碼如下

  labelA:

  for(String s: arr)

  {

  for(String ss: arr)

  {

  for(String sss: arr)

  {

  Systemoutprint(sss);

  continue labelA;

  }

  }

  }

  上面的代碼輸出aaa讀者可以將上面的代碼理解為如下的形 式(只是代碼形式並不符合Java語法規則)

  for(String s: arr)

  {

  for(String ss: arr)

  {

  for(String sss: arr)

  {

  Systemoutprint(sss);

  goto labelA;

  }

  }

  labelA:

  }

  當然也可以按同樣的方法跳出或繼續第二層循環代碼如下

  for(String s: arr)

  {

  labelA:

  for(String ss: arr)

  {

  for(String sss: arr)

  {

  Systemoutprint(sss);

  break labelA;

  }

  }

  }

  上面的代碼輸出aaa

  for(String s: arr)

  {

  labelA:

  for(String ss: arr)

  {

  for(String sss: arr)

  {

  Systemoutprint(sss);

  continue labelA;

  }

  }

  }

  上面的代碼輸出aaaaaaaaa


From:http://tw.wingwit.com/Article/program/Java/hx/201311/25864.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.