Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用嵌套for循环构建brick pryramid_Java - Fatal编程技术网

Java 如何使用嵌套for循环构建brick pryramid

Java 如何使用嵌套for循环构建brick pryramid,java,Java,我正在解决一个我有很多麻烦的问题。问题的概念是用砖块建造金字塔。整个砖块金字塔位于窗口的中心。我可以画一块砖,然后画两块,然后画三块,一直画到12块,这就是金字塔的底部,但是所有的砖都在窗口左侧的左边对齐,而不是在窗口中居中 使用getWidth()和getHeight()我可以做(getWidth()-BRICK\u WIDTH)/2;以获取砖的x坐标的中心。然后(getHeight()-BRICK\u HEIGHT)/2;用于一块砖的y坐标中心。唯一的问题是我不知道在哪里输入代码,所以它适用

我正在解决一个我有很多麻烦的问题。问题的概念是用砖块建造金字塔。整个砖块金字塔位于窗口的中心。我可以画一块砖,然后画两块,然后画三块,一直画到12块,这就是金字塔的底部,但是所有的砖都在窗口左侧的左边对齐,而不是在窗口中居中

使用getWidth()和getHeight()我可以做(getWidth()-BRICK\u WIDTH)/2;以获取砖的x坐标的中心。然后(getHeight()-BRICK\u HEIGHT)/2;用于一块砖的y坐标中心。唯一的问题是我不知道在哪里输入代码,所以它适用于所有的砖块,所以每行砖块都在窗口的中心

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

public class Pyramid extends GraphicsProgram {
  public void run() {
    double xCoordinate = (getWidth() - BRICKWIDTH) / 2;
    double yCoordinate = (getHeight() - BRICK_HEIGHT / 2);
    for (int i = 0; i < BRICKS_IN_BASE; i++) {
      for (int j = 0; j < i; j++) {
        double x = j * BRICK_WIDTH;
        double y = i * BRICK_HEIGHT;
        GRect square = new GRect(x, y, BRICK_WIDTH, BRICK_HEIGHT);
        add(square);
      }
    }
  }
  private static final int BRICK_WIDTH = 50;
  private static final int BRICK_HEIGHT = 25;
  private static final int BRICKS_IN_BASE = 12;
}
导入acm.program.*;
导入acm图形。*;
公共类金字塔扩展图形程序{
公开募捐{
双xCoordinate=(getWidth()-BRICKWIDTH)/2;
双Y坐标=(getHeight()-BRICK_HEIGHT/2);
for(int i=0;i
你是说这样的吗

    double x = xCoordinate + j * BRICK_WIDTH;
    double y = yCoordinate + i * BRICK_HEIGHT;

您应该尝试以下方法:

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

public class Pyramid extends GraphicsProgram
{
    public void run()
    {
        // We calculate some values in order to center the pyramid vertically
        int pyramidHeight = BRICKS_IN_BASE * BRICK_HEIGHT;
        double pyramidY = (getHeight() - pyramidHeight) / 2;

        // For each brick layer...
        for (int i=BRICKS_IN_BASE ; i >= 1; i--)
        {
            // We calculate some values in order to center the layer horizontally
            int layerWidth = BRICKWIDTH * i;
            double layerX = (getWidth() - layerWidth) / 2;
            double layerY = pyramidY + (i-1) * BRICK_HEIGHT;

            // For each brick in the layer...
            for(int j=0 ; j<i ; j++)
            {
                GRect square = new GRect(layerX + j*BRICK_WIDTH, layerY, BRICK_WIDTH, BRICK_HEIGHT);
                add(square);
            }
        }
    }

    private static final int BRICK_WIDTH = 50;
    private static final int BRICK_HEIGHT = 25;
    private static final int BRICKS_IN_BASE = 12;
}
导入acm.program.*;
导入acm图形。*;
公共类金字塔扩展图形程序
{
公开募捐
{
//为了使金字塔垂直居中,我们计算了一些值
int棱锥体高度=底部的砖块高度*砖块高度;
双金字塔=(getHeight()-pyramidHeight)/2;
//对于每个砖层。。。
对于(int i=BRICKS\u IN_BASE;i>=1;i--)
{
//我们计算一些值以使层水平居中
int layerWidth=砖宽*i;
双层x=(getWidth()-layerWidth)/2;
双层=金字塔+(i-1)*砖块高度;
//对于层中的每个砖。。。

对于(int j=0;jI刚刚尝试了你的代码,它工作正常。它绘制的图片与我应该绘制的完全相同。唯一的问题是它应该在窗口中居中,而不是坐在地上。我将对其进行编辑以解决此问题,我没有阅读它,它也应该垂直居中。谢谢。我必须仔细查看此示例才能完全理解我有一个简单的问题。int-pyramidHeight=BRICK_IN_BASE*BRICK_HEIGHT是怎么回事?这不只是计算当前一行砖的高度吗?一行砖的高度与单个砖的高度相同,因为砖在一层中水平对齐。因此,全局金字塔高度包含在一层的高度(BRICK_HEIGHT)中乘以金字塔中的层数(底部的砖块)。这就是为什么我们有金字塔高度=底部的砖块*底部的砖块高度