Uzupełnianie tablicy wartościami i wyświetlenie ich

0

Witam,
mam zadanie na studia:

        a) stworzyć tablicę typu int[20],
        b) napisać metodę która będzie uzupełniała tablicę wartościami od 40 do 20,
        c) napisać metodę, która wypisze otrzymane wartości,
        d) wstawić wywołanie metody do metody main

Tak napisałem metody, niestety zwraca mi to wartości od 21 do 40, nie wiem też czy dobry sposób wybrałem z dodawaniem tej wartości +21, będę wdzięczny za jakieś rady co poprawić

  
public static int[] metod5(int zmienna) {
                int[] tab = new int[zmienna];
                for (int i = 0; i < zmienna; i++) {
                    tab[i] = i + 21;
                }
                return tab;
            }

            public static void metoda2(int[] tab) {
                for (int zmienna : tab) {
                    System.out.print(zmienna + " ");
                }
            }

I wywołanie w main

int[] tablica1 = metod5(20);
            metoda2(tablica1);

0
for (int i = 0; i < zmienna; i++) {
    tab[i] = i + 21;
}

warunek fora możesz sobie napisać inaczej (int i = 40; i >= 20; i--) { ... }
i uzupełniać tablicę tab[i - 40] = i
czy jakoś tak, nie pamiętam, nie chce mi się tego kompilować :D

0

@trojanus: w takim układzie dostaje error :

Index -1 out of bounds for length 20
1
static void funnyMethod(int zmienna) {
        int tab[] = new int[zmienna + 1];
        for (int i = 2 * zmienna; i >= zmienna; i--) {
            tab[2 * zmienna  - i] = i;
        }

        for(int i : tab) {
            System.out.println(i);
        }
    }

głupie ale działa dla tego zakresu :D

lub jak chcesz się pozbyć dwójki z podwajania:

static void funnyMethod(int zmienna) {
        int tab[] = new int[zmienna + 1];
        for (int i = zmienna + zmienna; i >= zmienna; i--) {
            tab[zmienna + zmienna  - i] = i;
        }

        for(int i : tab) {
            System.out.println(i);
        }
    }
0

Metodki:

    static int[] fillArrayWithNumbers() {
        return IntStream.iterate(40, i -> i-1).limit(20).toArray();
    }

    static void printArrayElements(int[] array) {
        Arrays.stream(array).forEach(System.out::println);
    }

A to do main:

printArrayElements(fillArrayWithNumbers());

Tylko nie wiem czy to nie zbyt skomplikowane jak na obecny poziom.

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