当我在eclipse中运行这个程序时,我得到的输出显示一个矩形,一列有5颗星,连续有5颗星。它应该是一列中的5星和行中的2星。我的代码出了什么问题?
public class printing {
public static void main(String[] args) {
// printStars(5);
// printStars(3);
// printStars(9);
// printStars(4);
// printSqare(4);
printRectangle(5,2);
}
private static void printStars(int amount) {
int i = 0;
while ( i < amount ) {
System.out.print("*");
i++;
}
System.out.println("\n");
}
// private static void printSqare(int sidesize){
// int c= 0;
// while (c < sidesize){
// printStars(sidesize);
// c++;
// }
// System.out.println("\n");
// }
private static void printRectangle(int width, int height) {
int num1=0;
for (int num2=1; num2<height; num2++){
while (num1 < width ){
printStars(width);
num1++;
}
}
}
}
答案 0 :(得分:3)
您评论的printSquare
方法实际上很好,您可以重复使用printRectangle
的算法!
这里只需要一个循环,所以
private static void printRectangle(int width, int height) {
int num1=0;
while (num1 < height ){
printStars(width);
num1++;
}
}
或
private static void printRectangle(int width, int height) {
for (int num1 = 0; num1 < height; num1++ ){
printStars(width);
}
}
在当前代码中,您输入for
循环,然后在printStars
循环中调用while
。但是,while
循环5次而不是2次,因为条件为num1 < width
(而不是num1 < height
)。然后,for
第二次循环并且什么都不做(因为num1
大于width
)。
答案 1 :(得分:0)
您可以更改
之类的printRectangle方法private static void printRectangle(int width, int height) {
for (int num2 = 0; num2 < height; num2++) {
printStars(width);
}
}
我把你的问题读成有5 * 2的矩形。不确定它是否正确解释。