Цикл испортить шаблон в Java? - PullRequest
0 голосов
/ 21 октября 2018

Кажется, у меня возникли проблемы с циклом.Первая часть цикла работает нормально, но вторая часть не печатает правильное количество пробелов.Он должен начинаться с (N - 1) * 2 пробелов и уменьшаться до нуля, уменьшаясь каждый раз на два, или, по крайней мере, это то, чего я пытаюсь достичь.

Это должен быть цикл for иЯ думал, что то, что я ввел, сработает, но независимо от того, что я ввожу, я не могу получить желаемый результат.Например, если пользователь ввел четыре, это должен быть результат:

O      O
 O    O
  O  O
   OO 

Вместо этого я получаю:

O    O
 O    O
  O    O
   O    O

Это мой код:

    int N = 0;
    System.out.println("Enter a value between 2 and 10.");
    N = keyNum.nextInt();
    for (int a = 0; a < N; a++) 
    {
        System.out.println("");
        for (int b = 0; b < a; b++) 
        {
            System.out.print(" ");
        }
        System.out.print("O");

        //This loop is the one I`m having trouble with, everything else works fine!

        for (int c = (N - 1) * 2; c >= 0; c -= 2)
        {
            System.out.print(" ");  
        }
        System.out.print("O");
    }

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

Любой совет будет полезен!

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Что-то не так с вашим вторым циклом for.Вы не изменили количество пробелов на основе.Попробуйте это:

    int N = 0;
    Scanner keyNum = new Scanner(System.in);
    System.out.println("Enter a value between 2 and 10.");
    N = keyNum.nextInt();
    for (int a = 0; a < N; a++) 
    {
        System.out.println("");
        for (int b = 0; b < a; b++) 
        {
            System.out.print(" ");
        }
        System.out.print("O");

        for (int c = (N - a - 1) * 2 ; c > 0; c -= 2)
        {
            System.out.print("  ");  
        }
        System.out.print("O");
    }
0 голосов
/ 21 октября 2018

Да.Ваш текущий цикл является константой.Вам нужно также настроить его на a.То есть замените

for (int c = (N - 1) * 2; c >= 0; c -= 2)
{
    System.out.print(" ");  
}

на что-то вроде

for (int c = (N - a - 1) * 2; c > 0; c--) 
{
    System.out.print(" ");
}

, и без других изменений я получу (с N = 4)

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