Диагональные проблемы со звездами - PullRequest
1 голос
/ 21 апреля 2020

Я абсолютный новичок в java, и у меня возникли проблемы с пониманием того, как все это работает ... Может кто-нибудь объяснить мне, почему компьютер понимает "i" как горизонтальный ряд, а "j" как вертикальный ряд поскольку оба цикла for одинаковы, только с разными переменными?

public class DiagonalStar {
    public static void printSquareStar(int number) {
        if (number < 5) {
            System.out.println("Invalid Value");
        } else {
            for (int i = 1; i <= number; i++) {
                for (int j = 1; j <= number; j++) {
                    if ((i == 1) || (j == 1) || (i == number) || (j == number) || (i == j) || (j == number - i + 1)) {
                        System.out.print("*");
                    } else {
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
    }
}

Ответы [ 3 ]

2 голосов
/ 21 апреля 2020

Это на самом деле не вопрос вертикального или горизонтального, основанный на порядке выполнения строк кода. Например:

for(int n=0;n<10;n++)
{
System.out.println(n);

}

будет печатать 0 1 2 3 4 5 6 7 8 9

Но если вы поместите в него еще один l oop, он выполнит его перед передачей в следующий l oop из n.

for(int n=0;n<10;n++)
{
for(int m=10;m<15;m++)
{
System.out.println(n + "." + m);
}
}

Это напечатало бы 0,10 0,11 0,12 0,13 0,14 0,15

Все это, прежде чем перейти к 1,10, 1,11, et c ...

Поэтому, когда вы печатаете «*», вы просто зацикливаетесь в этой логике c, и всякий раз, когда вы завершаете внутреннее для вас, вы используете println (который печатает следующую строку)

I предложил бы возиться с переменными, посмотрите, что программа выводит, когда вы переключаете i с помощью j или когда вы меняете условия.

Удачи!

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

Вы вложили одно для l oop в другое. Это означает, что для каждого значения i вы проходите через все значения j. После внутреннего l oop у вас есть System.out.println(), и это перемещает вас в другую строку.

println() - печатает текст с новой строки

print() - просто печатает текст

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

System.out.print печатает в строке, а System.out.println печатает в столбце

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