有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

爪哇建造砖砌金字塔

我试图解决的问题是,在窗户中央用砖块砌一个金字塔。随着代码的崩溃,我希望第一排应该有1块砖,第二排应该有2块砖,第三排应该有3块砖,直到金字塔底部有12块砖。取而代之的是,只有一块砖块出现在屏幕中央。我能做些什么来更正我的代码

import acm.program.*;
import acm.graphics.*;



public class BrickPyramid extends GraphicsProgram{          

        public void run() {
         /** xBrick, yBrick trying to calculate for the center of the window **/ 

         double xBrick = (getWidth() - BRICK_WIDTH) / 2 ;              
         double yBrick = (getHeight() - BRICK_HEIGHT) /2 ; 

         /** getting the size of the brick by multiplying the brick width by brick height **/ 
         double buildingBrick = BRICK_WIDTH * BRICK_HEIGHT; 

           for (int i = 0 ; i <= 12; i ++ ){
               for (int j = 0; j < BRICKS_IN_BASE; j++){

                   double x = i * buildingBrick; 
                   double y = j * buildingBrick; 


               /* adding the brick with starting point xbrick, ybrick **/
                   GRect brick = new GRect (xBrick, yBrick, BRICK_WIDTH, BRICK_HEIGHT);
                   add(brick);

               } 
           }

    }
private static final int  BRICK_WIDTH = 100;
private static final int  BRICK_HEIGHT = 50;
private static final int BRICKS_IN_BASE = 12;
}

共 (2) 个答案

  1. # 1 楼答案

    不知道您是否仍在寻找答案,但此代码起作用:

    公共类金字塔扩展图形程序{

    专用静态最终整砖宽度=30

    private static final int BRICK_HEIGHT = 12;
    
    public void run() {
    
        double xBrick = (getWidth() - BRICK_WIDTH) / 2 ;              
        double yBrick = (getHeight() - BRICK_HEIGHT) /2 ; 
    
        for (int n=1;n<15;n++){
           for (int m=0;m<=n-1;m++){
    
            GRect Brick =new GRect(xBrick-(BRICK_WIDTH*(n-1))/2+m*BRICK_WIDTH,yBrick+BRICK_HEIGHT*(n-1),BRICK_WIDTH,BRICK_HEIGHT);
            add(Brick);
    
            }
          }
    }
    

    }

  2. # 2 楼答案

    使用多次执行的这一行构建所有砖块:

    GRect brick = new GRect (xBrick, yBrick, BRICK_WIDTH, BRICK_HEIGHT);
    

    但是,您永远不会更改传递给构造函数的任何变量的值,因此砖块都绘制在同一位置

    您需要为每个砖更改这些值。也许用i和j来确定这些值