我正在学习用Java编写代码。我有这个评估,我需要做:我必须创建一个Java应用程序,它将执行以下操作:
允许用户指定输入矩形的数量(3到30之间)。
生成所需数量的输入矩形(具有随机宽度和高度)并将其写入文件(人类可读)。
从上面步骤中生成的文件中读取随机生成的输入矩形。
以图形方式显示输入矩形,并相互正确布局
计算输出矩形。
以图形方式显示输出矩形,正确排列在一起。注意:输入和输出矩形必须同时显示。
将输出矩形坐标写入输出文件(人类可读)。“
矩形是简单的盒子(不是花哨的颜色等)。我一直在努力使用这个代码,设法完成输入+错误处理,它显示矩形但不是所需的。
错误:我需要它接受来自用户的矩形数量并将它们显示为彼此。
请在下面找到我的代码...提前致谢 LB
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);
}
}
答案 0 :(得分:3)
简单方法:
您可以创建一个起始位置x和y(如0,0),并继续将宽度添加到x和/或高度为y,并在下一个要绘制的回形图上使用它们,而不是固定起始位置(这将使他们在彼此内部。)
哦,只是为了确保你知道:drawRect(int startX, int startY, int width, int height)
答案 1 :(得分:2)
你正在把它们画在彼此之上。这一行:
g.drawRect(205,300,height,width);
从点(205,300)开始绘制所有矩形。
您必须更改前两个参数的值(可能只有其中一个)。我不会给你确切的代码,因为这是作业,但是:
你有一个起始位置,在你的代码中调用它(205,300),你绘制它们时每个矩形的宽度,你应该能够弄清楚下一个位置是什么。
另一件事是你正在创建一个新的Random
对象,你应该只在方法的顶部创建一个(或者在构造函数时为整个类创建一个)。