Проблема с прямоугольником звездочек Java MOOC 39.3 - PullRequest
0 голосов
/ 13 марта 2019

Так что я уверен, что это знакомая проблема, так как я видел ответы повсюду, но мне тяжело с этой частью. Я чувствую, что я близко, но некоторые результаты просто странные. Почти как это умножается (?) Как-то. Надеюсь, результаты дают ясность о том, что я имею в виду. С тем, где я нахожусь в этом курсе MOOC, я почти уверен, что собираюсь использовать циклы while при вызове оригинального метода printStars, поэтому я хочу, чтобы мой код был как можно ближе к этому.

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, приведенном выше, на самом деле не являются моим кодом, а просто заменяют приведенные ниже примеры выходных данных:

printRectangle (1,2): * +1006 *

*
*

printRectangle (1,5):

*
*
*
*
*

Кажется, что он работает правильно, по крайней мере, с высотой, но как только я начинаю тестирование с шириной, все облажается

printRectangle (2,2):

****
****

printRectangle (3,2):

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

Кажется, что высота все еще работает нормально, хотя ширина все странная

* * PrintRectangle тысячи двадцать-одина (2,3):
****
****
****    

printRectangle (3,3):

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

Это так странно, и я, честно говоря, не знаю, почему он это делает. Я уверен, что это что-то простое, что я не вижу, но я застрял на этом в течение нескольких часов, и любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 13 марта 2019

Ваш цикл для печати прямоугольника достаточно.Вам не нужен дополнительный метод печати.Или вам не нужен дополнительный цикл выбора за вами.

Примерно так:

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++;
 }
}

Любой из них будет работать !!

0 голосов
/ 13 марта 2019

Обратите внимание на то, как вы печатаете линии, которые соответствуют ширине предполагаемой ширины в квадрате . Это потому, что у вас есть вызов printStars внутри цикла while в методе printRectangle. Однако у вас есть еще одна while петля внутри printStars. Из-за этого вы получаете ширину * ширину звезд.

В printRectangle нет необходимости во внутренней петле while; просто позвоните printStars, все еще находясь внутри внешней петли while на height, еще до печати новой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...