2012-10-08 49 views
0

我對Java很陌生,也許我的問題有點令人煩惱。去java的開頭語句

我的代碼中有兩個for循環,我想通過for - else聲明去每個循環的開頭。

public static void main(String[] args) 
{ 
    int[][] x=new int[1000][1000]; 

    int[] Z=new int[1000]; 

    lable1: 
     for(int i=1; i<=1000; i++) 
     { 
      Z[i]=rand1.nextInt(1000); 
      System.out.println("Z["+i +"] = " + Z[i]); 

      if(Z[i]>0 && Z[i]<=Nk) 
      { 
       int Z1=Z[i]-1; 
       lable2:   
        for(int j = 1; j<=Z1;j++) 
        { 
         x[i][j]= rand2.nextInt(1000); 
         sum+=x[i][j]; 
         if(sum<1000) 
         { 
          x[i][(j+1)]=1000-sum; 
          System.out.println("x[" + i+"][" + j + "] = " + x[i][j]); 
          System.out.println("Nx[" + i+"][" + (j+1) + "] = " +x[i][(j+1)]); 
         } 
         else{ 
          // ???? 
          //Goto lable2; 
         } 
        } 
      } 
      else{ 
       //goto label1; 
       // ???? 
      } 
     } 

} 
+3

請提出問題,然後再問問題=)。這很難理解。 – Pigueiras

+2

不錯的使用隨機壓痕 –

+0

試用'繼續'?? –

回答

6

您可以break任何定義的標籤(範圍內)使用:

break label; 

同樣適用於continue

Here是要讀的東西。

在你的特定的例子中,刪除else會做你想做的。

3

只需使用continue關鍵字。它會繼續與下一個迭代.. 無需標記您的循環。至於你是不是繼續從內一個外環..或者,如果你想continue利用外環,您可以使用continue標籤 ...

你應該用你從j = 0 to j < z1循環..

for(int j = 0; j < Z1;j++) {  
     if(sum<1000) { 
      x[i][(j+1)]=1000-sum; 
      System.out.println("x[" + i+"][" + j + "] = " + x[i][j]); 
      System.out.println("Nx[" + i+"][" + (j+1) + "] = " +x[i][(j+1)]); 
     } 
     else{ // Not needed if your else does not contain anything else.. 
      continue; 
     } 
} 

其實你並不需要一個else所有..如果你不是在做任何進一步處理..

只是將其刪除。它會自動轉到你的循環..

建議: - 你應該使用編碼約定..變量名開始lowercase letterunderscore ..(Z1 - > Z1)

3

給你:

public static void main(String[] args) { 
     int[][] x = new int[1000][1000]; 

     int[] Z = new int[1000]; 

     boolean resetOuterCycle = true; 

     for (int i = 0; i < 1000; i++) { 
      Z[i] = rand1.nextInt(1000); 
      System.out.println("Z[" + i + "] = " + Z[i]); 

      if (Z[i] > 0 && Z[i] <= Nk) { 
       int Z1 = Z[i] - 1; 

       boolean resetInnerCycle = true; 

       for (int j = 0; j < Z1; j++) { 
        x[i][j] = rand2.nextInt(1000); 
        sum += x[i][j]; 
        if (sum < 1000) { 
         x[i][(j + 1)] = 1000 - sum; 
         System.out.println("x[" + i + "][" + j + "] = " + x[i][j]); 
         System.out.println("Nx[" + i + "][" + (j + 1) + "] = " + x[i][(j + 1)]); 
        } else if (resetInnerCycle) { 
         j = 0; 
         resetInnerCycle = false; 
        } 
       } 
      } else if (resetOuterCycle) { 
       i = 0; 
       resetOuterCycle = false; 
      } 
     } 

    } 
+2

+1你可以刪除'else {continue; }';) –

+0

是的,謝謝。 –

+2

和'繼續;' –

1

-在你上面的代碼,你可以用2的方法來做到這一點...

1方法:沒有else部分

for (int i = 0; i < 1000; i++) { 

    if (Z[i] > 0 && Z[i] <= Nk){ 
    for (int j = 0; j < Z1; j++) { 

      if(sum < 1000){ 


     } 
     } 
    } 
    } 

第二個方法:隨着else部分和continue

for (int i = 0; i < 1000; i++) { 

    if (Z[i] > 0 && Z[i] <= Nk){ 

    for (int j = 0; j < Z1; j++) { 

       if(sum < 1000){ 


      }else{ 

        continue; 

      } 
      } 
     }else{ 

       continue; 

     } 
    }