3

幅と高さの 2 つの次元が指定されたアスタリスクの四角形を描画する単純なプログラムを作成しようとしています。ここにコードがあります

public class Rectangle {

private int width, height;

public Rectangle(){
System.out.println("A rectangle created: width = 10 and height = 25");
width = 10;
height = 25;
}

public Rectangle(int w, int h){
if (w > 0 && w < 30 && h > 0 && h < 30){
    width = w;
    height = h;
    System.out.println("Rectangle Created: Height = "+h+" and width = "+w);
}else{
    System.out.println("Invalid values for rectangle, Values ,ust be positive                and less than 30");
}
}

public int getArea(){
return width * height;  
}

public void draw(){
for(int rowCounter=0; rowCounter<height; rowCounter++){
    for(int colCounter=0; colCounter<width; colCounter++){
        System.out.println("*");
    }
}
}
}

私の長方形のテストコードは次のとおりです

public class TestRectangle {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Rectangle r1 = new Rectangle();
        r1.draw();

        Rectangle r2 = new Rectangle(15,5);
        System.out.println("Area of rectangle r2: "   +r2.getArea());
        r2.draw();
    }

    }

結果は、期待される Rectangle ではなく、アスタリスクの 1 つの長い列になります。

誰かが私が間違っていることを指摘してください。

4

7 に答える 7

3

println引数を出力し、次に改行を出力します。

print内側のループ内で、println外側のループごとに 1 回ずつ使用する必要があります。

public void draw(){
    for(int rowCounter=0; rowCounter<height; rowCounter++){
        for(int colCounter=0; colCounter<width; colCounter++){
            System.out.print("*");
        }
        System.out.println();
    }
}
于 2013-10-16T09:37:48.963 に答える
2
for(int rowCounter=0; rowCounter<height; rowCounter++){
  for(int colCounter=0; colCounter<width; colCounter++){
      System.out.print("*");
  }
  System.out.println();
}
于 2013-10-16T09:38:21.150 に答える
1

改行を追加する必要があります。

内側の for ループの後に、次を追加する必要があります。

System.out.print("\n");
//alternatively just use println which does almost exactly the same

prinln は現在の line.separator を現在の Print Stream に書き込みます

println("foo"); == print("foo"); println(); == print("foo"); print(line.separator);

while line.separator は通常、常にではありませんが "\n" です

これにより、コードは次のようになります。

for(int rowCounter=0; rowCounter<height; rowCounter++){
    for(int colCounter=0; colCounter<width; colCounter++){
        System.out.print("*");
    }
    System.out.print("\n");
    }
}
于 2013-10-16T09:40:30.657 に答える
0

これを試して:

public void draw(){
  for(int rowCounter=0; rowCounter<height; rowCounter++){
    for(int colCounter=0; colCounter<width; colCounter++){
        System.out.print("*");
    }
    System.out.println();
  }
}
于 2013-10-16T09:39:27.960 に答える
0

問題はprintlnを使用していることだと思います。Println は各行の最後に "\n" を出力するので、"*" を出力するたびに \n を出力して次の行に進みます。

draw関数でこれを試していただけますか?印刷機能の println を変更するだけで、

public void draw(){
for(int rowCounter=0; rowCounter<height; rowCounter++){
    for(int colCounter=0; colCounter<width; colCounter++){
        System.out.print("*");
    }
System.out.println("");
}
}
于 2013-10-16T09:41:49.393 に答える
0
public void draw(){
for(int rowCounter=0; rowCounter<height; rowCounter++){
    System.out.println();
    for(int colCounter=0; colCounter<width; colCounter++){
        System.out.print("*");
    }
    System.out.println();
}
}

println()、コンソールに出力した後に新しい行を作成するため、内側のループではprintlnを使用せず、print()内側のループの後に新しい行を印刷する必要があります

于 2013-10-16T09:41:49.790 に答える
0

これを試してみてください。

内部ループの後に、次を追加する必要があります。

System.out.print("\n");

コードに固有:

for(int rowCounter=0; rowCounter<height; rowCounter++){
   for(int colCounter=0; colCounter<width; colCounter++){
      System.out.print("*");
   }
   System.out.print("\n");
}
于 2013-10-16T09:44:33.230 に答える