似乎无法正确打印我的嵌套循环

时间:2013-10-16 09:34:52

标签: java

我正在尝试编写一个简单的程序,绘制一个矩形的星号,给出两个尺寸,宽度和高度。这是代码

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();
    }

    }

结果是一长串星号而不是希望的矩形。

有人可以指出我做错了什么。

7 个答案:

答案 0 :(得分:3)

println打印参数,然后打印换行符。

您需要在内部循环中使用print,并为每个外部循环使用println一次。

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

您需要添加换行符。

在你的内部for循环后,你应该添加以下内容:

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

prinln writes the current line.separator to the current Print Stream

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

虽然line.separator通常,但并不总是“\ n”

这使您的代码看起来像这样:

for(int rowCounter=0; rowCounter<height; rowCounter++){
    for(int colCounter=0; colCounter<width; colCounter++){
        System.out.print("*");
    }
    System.out.print("\n");
    }
}

答案 3 :(得分:0)

试试这个:

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

答案 4 :(得分:0)

我认为问题是你正在使用println。 Println在每行的末尾打印“\ n”,因此每次打印“*”时都会打印\ n,然后转到下一行。

你可以在绘图功能中尝试这个吗?只需将println更改为打印功能,然后进行

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

答案 5 :(得分: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()并且在内部循环之后有一个新的行打印

答案 6 :(得分: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");
}