繁体   English   中英

在Java中彼此相邻绘制矩形

[英]Draw rectangles next to each other in Java

我正在学习用Java编写代码。 我需要执行此评估:我必须创建一个将执行以下操作的Java应用程序:

  • 允许用户指定输入矩形的数量(3到30之间)。

  • 生成请求数量的输入矩形(具有随机的宽度和高度)并将其写入文件(人类可读)。

  • 从上面步骤中生成的文件中读取随机生成的输入矩形。

  • 以图形方式显示输入矩形,并且彼此正确布置

  • 计算输出矩形。

  • 以图形方式显示输出矩形,彼此正确放置。 注意:输入和输出矩形都必须同时显示。

  • 将输出矩形坐标写入输出文件(人类可读)。”

矩形是简单的盒子(没有花哨的颜色等)。 我一直在努力处理此代码,设法完成输入+错误处理,并且它显示矩形,但未显示所需的矩形。

错误:我需要它接受用户的大量矩形并将它们彼此相邻显示。

请在下面找到我的代码...预先感谢。


import java.awt.Graphics;
import javax.swing.JFrame;
import java.util.Random;
import java.util.Scanner;


public class final_rect extends JFrame
{

    public final_rect()
    {
        setTitle("tutorial");
        setSize(700,500);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public void paint(Graphics g)
    {
              int x = 50;
              int y = 50;
              Random rnd = new Random();

        for (int i=1; i <=5; i++)
        {
            int width = rnd.nextInt(200);
            int height = rnd.nextInt(200);
        System.out.println("Rectangle["+ i +"]" + ":(W="+width+ ";H=" +height +")");

        g.drawRect( x , y , width, height);

// Update the coordinates for the next rectangle.
                  x =  x + width;
            }
    }

    public static void main(String[] args)

    {

Scanner sc = new Scanner(System.in);

int number;
do {
    System.out.println("Please enter a number between 3 and 30!");
    while (!sc.hasNextInt()) {
        System.out.println("That's not a number! Please enter a number between 3 and 30!!!");
        sc.next();
    }
    number = sc.nextInt();
} 
while (number <3 || number > 30);

System.out.println("Thank you! Got " + number);

test1 t = new test1();
        t.paint(null);

    }
}

简单方法:

您可以设定起始位置x和y(例如0,0),并继续将宽度添加到x和/或将高度添加到y,并在要绘制的下一个矩形上使用它们,而不是固定起始位置(使它们彼此融合)。

哦,只是要确保您知道: drawRect(int startX, int startY, int width, int height)

您正在将它们彼此叠加。 这行:

g.drawRect(205,300,height,width);

从点(205,300)开始绘制所有矩形。

您必须更改前两个参数的值(可能只有其中一个)。 我不会为您提供确切的代码,因为这是家庭作业,但:

您有一个起始位置,就像在代码中那样将其命名为(205,300),绘制时具有每个矩形的宽度,使用此信息,您应该能够知道下一个位置是什么。

另一件事是您要在循环中的所有位置创建一个新的Random对象,您只应在方法的顶部(或在构造函数时为整个类)创建一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM