Вывести заданный шаблон номера из пользовательского ввода, используя вложенный цикл for - PullRequest
1 голос
/ 11 марта 2020

Я новичок в программировании. В настоящее время я изучаю Java на вложенном l oop сейчас и застрял.

Итак, я хочу написать программу, которая получает целое число от пользователя и

печать строк, например, если пользовательский ввод был равен 4, то результат должен выглядеть следующим образом:

1

1 2

1 2 3

1 2 3 4

Вот мой код:

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter number of rows:");
        int number = input.nextInt();
        for (int i = 1; i <= number; i++) {
            System.out.println(i);
            for (int j = 1; j <= i; j++) {
                System.out.print(j + " ");
            }
        }
    }
}

Но он печатает одну дополнительную строку в конце Например:

1

1 2

1 2 3

1 2 3 4

1 2 3 4

И мне трудно понять, почему.

Полагаю, это мой первый вариант для l oop, но я не знаю, как это исправить. для l oop чтобы получить желаемый результат.

Любая помощь будет оценена. Спасибо!

Ответы [ 4 ]

1 голос
/ 11 марта 2020

Чтобы избежать пробелов в других ответах, вместо печати i в начале l oop выведите 1. Затем начните внутренний l oop с 2 и выведите пробел перед каждым значением. И напечатайте новую строку после внутренней l oop.

for (int i = 1; i <= number; i++) {
    System.out.print("1");
    for (int j = 2; j <= i; j++) {
        System.out.print(" " + j);
    }
    System.out.println();
}

Отпечатки:

1 1 2 1 2 3 1 2 3 4

1 голос
/ 11 марта 2020

Ничего не печатать с внешней l oop, только с новой строки

for (int i = 1; i <= number; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.print(j + " ");
    }
    System.out.println();
}

Вывод

1 
1 2 
1 2 3 
1 2 3 4 
0 голосов
/ 11 марта 2020
Let's us dry run it
at first you print 
1
then newline
then j goes from 1 to 1 nut no newline now 2 is printed by i now newline
so result 1 2
again j goes like 1 , 2 but no newline so again 3 is printed by i then newline
so result 1 2 3 
again j goes like 1 , 2, 3, but no newline so again 4 is printed by i then newline
so result 1 2 3 4
again j goes like 1 , 2, 3, 4 // this one is the extra line
0 голосов
/ 11 марта 2020

Проблема заключается в печати новой строки и i одновременно ... просто позаботьтесь о новой строке после for l oop. Внутренний l oop может обрабатывать все отпечатки.

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter number of rows:");
        int number = input.nextInt();

        for (int i = 1; i <= number; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + " ");
            }

            System.out.println();
        }
    }
}
...