首页 > 解决方案 > 星号矩形 Java MOOC 39.3 的问题

问题描述

所以我确信这是一个熟悉的问题,因为我已经看到了所有答案,但我在这部分遇到了特别困难。我觉得我很接近,但有些输出很奇怪。几乎就像它正在以某种方式相乘(?)。希望输出能够清楚地说明我的意思。由于我在这个 MOOC 课程中的位置,我很确定我打算在调用原始 printStars 方法时使用 while 循环,所以我想让我的代码尽可能地相似。

public class HelloWorld {
private static void printStars(int amount) {
int i = 0;
while (i<amount) {
  System.out.print("*");
  i++;
 }
}
private static void printRectangle(int width, int height){
 int i = 0;
  while(i < height){
    int j = 0;
      while(j < width){
        printStars(width);
        j++;
}
System.out.println();
i++;
 }
}


public static void main(String[] args) {
printRectangle(width,height);    
 }
}

请注意,上面 printRectangle 方法中的宽度和高度实际上不是我的代码,而只是替换了下面的示例输出:

打印矩形(1,2):

*
*

打印矩形(1,5):

*
*
*
*
*

它似乎至少在高度上可以正常工作,但是一旦我开始用宽度进行测试,它就会全部搞砸

打印矩形(2,2):

****
****

打印矩形(3,2):

*********
*********

尽管宽度很奇怪,但高度似乎仍然可以正常工作

打印矩形(2,3):

****
****
****    

打印矩形(3,3):

*********
*********
*********

这太奇怪了,老实说,我不知道为什么要这样做。我敢肯定这是我看不到的简单事情,但我已经坚持了几个小时,感谢您提供任何帮助。

标签: javamethodswhile-loop

解决方案


打印矩形的循环就足够了。您不需要额外的打印方法。或者你不需要额外的循环选择是你的。

像这样的东西:

private static void printRectangle(int width, int height){
 int i = 0;
  while(i < height){
    int j = 0;
      while(j < width){
        System.out.print("*");
        j++;
}
System.out.println();
i++;
 }
}

或者

private static void printStars(int amount) {
int i = 0;
while (i<amount) {
  System.out.print("*");
  i++;
 }
}
private static void printRectangle(int width, int height){
 int i = 0;
  while(i < height){
         printStars(width);
}
System.out.println();
i++;
 }
}

任何一个都可以工作!!


推荐阅读