我正在尝试编写一个简单的程序,绘制一个矩形的星号,给出两个尺寸,宽度和高度。这是代码
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();
}
}
结果是一长串星号而不是希望的矩形。
有人可以指出我做错了什么。
答案 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");
}