0

私は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);

    }
}
4

2 に答える 2

3

簡単な方法:

開始位置 x と y (0,0 など) を作成し、幅を x に追加したり、高さを y に追加したりして、開始位置を固定する代わりに、次に描画する retangle でそれらを使用することができます (つまり、それらをお互いの中に入れてください)。

ああ、あなたが知っていることを確認するために:drawRect(int startX, int startY, int width, int height)

于 2012-05-29T19:58:59.957 に答える
2

あなたはそれらをお互いの上に描いています。この行:

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

すべての点 (205,300) から始まる四角形を描画します。

最初の 2 つの引数 (おそらく 1 つだけ) の値を変更する必要があります。これは宿題なので、正確なコードは示しませんが、

開始位置があり、コードのように (205,300) と呼びます。描画するときに各長方形の幅があり、この情報を使用して、次の場所が何であるかを把握できるはずです。

Randomもう 1 つのことは、メソッドの先頭 (またはコンストラクター時にクラス全体) で 1 つだけ作成する必要があるループを介してすべての新しいオブジェクトを作成していることです。

于 2012-05-29T20:01:06.930 に答える