2013-08-03 5 views
-1

Привет Я изучаю Java и нашел решение, которое довольно аккуратно, , но меня интересует определенная строка кода во втором цикле. я не знаю, к кому обратиться, потому что я не в школе для Java еще поэтому я спрашиваю здесь, , но все равно:Java вложен для цикла, увеличивающего второй цикл, первым для цикла?

for (int i = 0; i < BRICKS_IN_BASE + (-h); i++) 

Означает ли это, что «повторить i для этого количество раз» добавляется 'в' h минус 1 '? Более конкретно, что такое (-h)? Это предварительный прирост? И почему это в скобках?

Он снова используется для объявления переменной x.

import acm.graphics.*; 
import acm.program.*; 
import java.awt.*; 

public class Pyramid extends GraphicsProgram { 

    /** Width of each brick in pixels */ 
    private static final int BRICK_WIDTH = 30; 

    /** Width of each brick in pixels */ 
    private static final int BRICK_HEIGHT = 12; 

    /** Number of bricks in the base of the pyramid */ 
    private static final int BRICKS_IN_BASE = 15; 

    public void run() { 
     for (int h = 0; h < BRICKS_IN_BASE; h++) 
     { 
      for (int i = 0; i < BRICKS_IN_BASE + (-h); i++) 
      { 
       int k = i * BRICK_WIDTH; 
       int m = h * BRICK_HEIGHT; 
       int x = ((getWidth() - ((BRICKS_IN_BASE + (-h)) * BRICK_WIDTH))/2) + k; 
       int y = getHeight() - ((BRICK_HEIGHT + 1) + m); 
       GRect brick = new GRect (x, y, BRICK_WIDTH, BRICK_HEIGHT); 
       add(brick); 
      } 
     }    
    } 
} 
+1

Может быть типа 'INT I = 1; System.out.println (1 + (-i)); 'на свой компьютер и посмотреть, что произойдет? –

ответ

0
for (int i = 0; i < BRICKS_IN_BASE + (-h); i++) 

действительно ((-h) просто -1 * ч)

for (int i = 0; i < (BRICKS_IN_BASE - h); i++) 

благодаря operator precedence