Попытка создать квадрат в java, но звезды продолжают делиться пополам - PullRequest
2 голосов
/ 19 апреля 2020

новичок в курсе java и пытался сделать это, но изо всех сил. нужно сделать квадрат 6 на 6, используя методы to (предыдущий должен был просто сделать ряд из 6 *).

любой совет о том, где я иду не так, был бы удивительным.

public class loopsLauncher {
    //Sterrenrij & SterrenVierKant
    public static void main(String[] args) {
        //print * 8 times using a method and loop
        int aantal = 0;
        toonRijSterren(aantal);
        toonSterrenVierkant(aantal);
    }

    public static void toonRijSterren(int mpAantal) {
        while (mpAantal < 6) {
            System.out.print(" * ");
            mpAantal++;
        }
    }

    public static void toonSterrenVierkant(int mpAantal) {
        for (int i = 0; i < 6; i++) {
            ++mpAantal;
            System.out.println();
            toonRijSterren(mpAantal);
        }
    }
}

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 19 апреля 2020

Я не знаю голландского, поэтому я пишу имена на английском языке sh. Надеюсь, вы поймете.

Если вы хотите рекурсии, попробуйте код ниже. Код будет работать как для прямоугольников, так и для квадратов.

Первый метод (showRowStars) просто выполняет for-l oop вместо l oop, которое у вас зависело от mpAantal, равного 0.

Для второго метода (showRowsOfStars) ), он принимает количество строк в качестве входных данных. Он вызывает метод showRowStars для печати строки звездочек, а затем вызывает сам, за исключением одной строки меньше. Когда количество строк (numRows) достигает 0, оно останавливается.

Если вы не хотите прямоугольник, вы можете вызвать метод showStarSquare, который просто вызывает метод showRowsOfStars, но требует только одного аргумента, поскольку оба измерения одинаковы.

public class loopsLauncher {
    //Sterrenrij & SterrenVierKant
    public static void main(String[] args) {
        //print * 8 times using a method and loop
        showRowStars(6);
        showRowsOfStars(6, 6);
    }

    public static void showRowStars(int numStars) {
        for (int i = 0; i < numStars; i ++) {
            System.out.print(" * ");
        }
    }

    //numStars is stars per row
    public static void showRowsOfStars(int numRows, int numStars) {
        if (numRows == 0) return;
        showRowStars(numStars);
        showRowsOfStars(numRows - 1, numStars);
    }

    public static void showStarSquare(int numStars) {
      showRowsofStars(numStars, numStars);
   }
}
0 голосов
/ 19 апреля 2020

Почему бы вам просто не использовать вложенные циклы?

int sqSize = 6;
for (int i = 0; i < sqSize; i++) {
    for (int j = 0; j < sqSize; j++) {
        System.out.print(" *");
    }
    System.out.print("\n");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...