Wyświetlanie zmiennej ilość gwiazdek

0

Mam takie zadanie, napisz aplikacje która odczyta piec liczb z przedziału od 1 do 30. Dla każdej odczytanej liczby program powinien wyświetlić taka sama liczbę gwiazdek tuz obok siebie. Wyświetl gwiazdki po wczytaniu wszystkich liczb.

public static void main(String [] args) {

        Scanner input = new Scanner(System.in);

        int l1,l2,l3,l4,l5;

        l1 = input.nextInt();
        l2 = input.nextInt();
        l3 = input.nextInt();
        l4 = input.nextInt();
        l5 = input.nextInt();


        for(int i = 0; i<l1; i++) {
            System.out.print("*");
        }
        System.out.println();
        for(int i = 0; i<l2; i++) {
            System.out.print("*");
        }
        System.out.println();
        for(int i = 0; i<l3; i++) {
            System.out.print("*");
        }
        System.out.println();
        for(int i = 0; i<l4; i++) {
            System.out.print("*");
        }
        System.out.println();
        for(int i = 0; i<l5; i++) {
            System.out.print("*");
        }

Na szybko skleiłem coś takiego, ale wiem ze nie wygląda to zbyt korzystnie, czy ktoś mógłby mi dać jakaś wskazówkę jak mogę skrócić ten kod, próbowałem zagnieżdżać for, ale nie wychodziło mi. Bo za każdym razem gwiazdki wyświetlały się zaraz po wczytaniu pojedynczej wartości.

4

W te strone kolego :P

private static void printStars(int i) {
        for(int j = 0; j<i; j++) {
            System.out.print("*");
        }
        System.out.println();
    }

Jezeli Cie ten kod rozsierdzil to: https://www.radioart.com/

2

I poczytaj trochę o clean code, te zmienne wyglądają jak liczby :)
int l1,l2,l3,l4,l5; (vs 11,12,13,14,15)

l1 = input.nextInt();
l2 = input.nextInt();
l3 = input.nextInt();
l4 = input.nextInt();
l5 = input.nextInt();

to możesz też wrzucić w pętle, a liczby do tablicy/listy

0

@Productionserver: Tak tylko zapomniałem dodać że nie mogę uzywać tablicy, przynajmniej według materiału z książki.

1

@p_agon: haha, dzięki. Takie proste a takie trudne zarazem.

2

Zawsze można streamami pokombinować :)

try (Scanner input = new Scanner(System.in)) {
    Stream.generate(input::nextInt)
        .limit(5)
        .map(number -> Stream.generate(() -> "*").limit(number).collect(Collectors.joining()))
        .collect(Collectors.toList())
        .forEach(System.out::println);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1