2012-05-03 12 views
1

ワイオミングこれらのループです:奇妙なループ出力 - Javaの

X: 0, Y: 0 
    X: 0, Y: 1 
    X: 0, Y: 2 
    X: 0, Y: 3 
    X: 0, Y: 4 
    X: 0, Y: 5 
    X: 0, Y: 6 
    X: 0, Y: 7 
    X: 0, Y: 8 
    X: 0, Y: 9 
    X: 0, Y: 10 
    X: 0, Y: 11 
    X: 0, Y: 12 
    X: 0, Y: 13 
    X: 0, Y: 14 
    X: 0, Y: 15 
    X: 0, Y: 16 
    X: 0, Y: 17 
    X: 0, Y: 18 
    X: 0, Y: 19 
    X: 0, Y: 20 
    X: 0, Y: 21 
    X: 0, Y: 22 
    X: 0, Y: 23 
    X: 0, Y: 24 
    X: 0, Y: 25 
    X: 0, Y: 26 
    X: 0, Y: 27 
    X: 0, Y: 28 
    X: 0, Y: 29 
    X: 0, Y: 30 
    X: 0, Y: 31 
    X: 0, Y: 32 
    X: 0, Y: 33 
    X: 0, Y: 34 
    X: 0, Y: 35 
    X: 0, Y: 36 
    X: 0, Y: 37 
    X: 0, Y: 38 
    X: 0, Y: 39 
    X: 0, Y: 40 
    X: 0, Y: 41 
    X: 0, Y: 42 
    X: 0, Y: 43 
    X: 0, Y: 44 
    X: 0, Y: 45 
    X: 0, Y: 46 
    X: 0, Y: 47 
    X: 0, Y: 48 
    X: 0, Y: 49 
    X: 0, Y: 50 

while (x <= gridWidth) { 
      while (y <= gridHeight) { 
       System.out.println("X: " + x + ", Y: " + y); 
       y++; 
      } 
      x++; 
     } 

はこれを出力しますか?

私はそれを印刷したので、gridWidth = 50と私は確信しています。

+7

gridHeight = 50の場合の動作は正常ですが、何を期待していましたか? –

答えて

9

ネストループが開始する前にyをゼロにリセットする必要があります。さもなければ、yが既にgridHeightの上にあるので、外側ループは50回実行されますが、内側ループはまったく実行されません。

+0

私は10分でアンカーに同意することができます... – 11684

+4

と 'for'ループはこれに対して完璧です:for(y = 0; y <= gridHeight; y ++)'。ループの後に 'y'の値を必要としない場合は、宣言を' for': 'for(int y = 0 ...')に移動することもできます。 – yshavit

+1

@dasblinkenlightはあなたの応答を見たことがありません。投稿前に – bluesman

0

あなたが再各ループJoshua Blochとして

while (x <= gridWidth) { 
     y = 0; 
     while (y <= gridHeight) { 
      System.out.println("X: " + x + ", Y: " + y); 
      y++; 
     } 
     x++; 
    } 
0
int y=0,x=0; 
while (x <= gridWidth) { 
    while (y <= gridHeight) { 
    System.out.println("X: " + x + ", Y: " + y); 
    y++; 
    } 
x++; 
y=0; 
} 
0
final int gridWidth = 50, gridHeight = 50; 

for(int x = 0; x <= gridWidth; x++) 
    for(int y = 0; y <= gridHeight; y++) 
    System.out.println("X: " + x + ", Y: " + y); 
2

とYを初期化していないが、それには本Effective Java、いつでもすることができます代わりに、しばらくの構造体に使用するのです示唆しています。エラーが起こりにくく、簡潔で、実際にはエラーを防ぎました。

for (int x=0;x <= gridWidth;x++) 
    for (int y=0;y <= gridHeight;y++) 
     System.out.println("X: " + x + ", Y: " + y);