0

私は2つのクラスを書きました。メインクラスはプログラムを実行します。ユーザー入力を求めます。ユーザー入力に基づいて、2 番目のクラスは正方形を出力します。各正方形は、すべての数字と | に対して ---- を出力します。壁のすべての番号について。

たとえば、ユーザーが 2 を入力したとします。その場合、正方形が出力されます。

----- -----
|         | 
|         | 
----- -----

問題は、ユーザー入力に基づいて成長する正方形を取得できないことです。

これがメインクラス

import java.util.Scanner;

public class Assignment4 
{
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);

        SquareBuilder square = new SquareBuilder(scan.nextInt());

        System.out.print(square.toString());
        square.changeSize(scan.nextInt());
        System.out.print(square.toString());
        square.changeSize(scan.nextInt());
        System.out.print(square.toString());
        square.changeSize(scan.nextInt());
        System.out.print(square.toString());
        square.changeSize(scan.nextInt());
        System.out.print(square.toString());
    }
}

public class SquareBuilder
{
    final private int LENGTH_RATIO = 4;
    final private String CEILING_FLOOR = "----";
    private int size;
    private int spaces;
    private String square;      

    public SquareBuilder(int size) 
    {
        this.size = size;
        constructSquare();
    }

    private void spaces()
    {
         spaces = LENGTH_RATIO * size - 2;
    }

    private void ceilingAndFloor()
    {
        square += "\n";
        for (int i = 0; i < size; ++i)
        {
            square += CEILING_FLOOR;
        }
    }

    private void walls()
    {
        for (int i = 0; i < size; ++i )
        {
            square +="\n|";

            for (int j = 0; j < spaces; ++j)
            {
                square +=" ";
            }

            square +="|";
        }
    }

    private void constructSquare()
    {
        spaces ();
        square = "";

        ceilingAndFloor();
        walls();
        ceilingAndFloor();

    }

    public int area()
    {
        return size * size;
    }

    public void changeSize(int size)
    {
        this.size = size;
    }

    public String toString()
    {
        String retVal = square;
        retVal += "\nSize: " + size + " Area: " + area();

        return retVal;
    }
}
4

2 に答える 2

1

レンダリングする正方形の部分を変更することさえありません。

constructSquare()メソッドからメソッドを呼び出すchangeSize()か、少なくともconstructSquare()もう一度印刷する前に呼び出したいと思います

于 2013-05-01T18:02:32.440 に答える
0

constructSquare() を changeSize 関数に入れます。必要な変更:

public SquareBuilder(int size) 
    {

        changeSize( size);

    //    constructSquare();
    }

    public void changeSize(int size)
    {

        this.size = size;
        constructSquare();

    }
于 2013-05-01T18:06:12.543 に答える