Java - tworzenie tablicy przez funkcję

2011-08-06 16:27

Rejestracja: 8 lat temu

Ostatnio: 6 lat temu

0

Mam taki program:

 package pl.java.moj_pakiet;

import java.util.Random;

public class Tab {

    public static void main(String[] args) {
        int tab[][] = new int [4][];
        tab[0] = new int [3];
        tab[1] = new int [4];
        tab[2] = new int [5];
        tab[3] = new int [1];

        Tab go = new Tab();

        go.Wprowadz(tab);

        int tab2[][] = null;

        go.Wypelnij(tab, tab2);

        go.Wyswietl(tab2);

    }

    public void Wprowadz(int t[][])
    {
            Random rn = new Random();

            int i, j;
            int n = t.length;
            for (i = 0; i < n; i++)
            {
                int m = t[i].length;
                for (j = 0; j < m; j++)
                    t[i][j] = rn.nextInt();
            }
    }

    public void Wypelnij(int t1[][], int t2[][])
    {
        int max = 0;

        for (int i = 0; i < t1.length; i++)
            if (max < t1[i].length)
                max = t1[i].length;

        t2 = new int [t1.length][max];

        for (int i = 0; i < t1.length; i++)
        {
            for (int j = 0; j < t1[i].length; j++)
                t2[i][j] = t1[i][j];

            for (int j = t1[i].length; j < max; j++)
                t2[i][j] = -5;
        }
    }

    public void Wyswietl(int t[][])
    {
        for (int i = 0; i < t.length; i++)
        {
            for (int j = 0; j < t[i].length; j++)
                System.out.println(t[i][j] + "\t");

            System.out.println("\n");
        }

    }
}

Eclipse wyrzuca takie coś:

 Exception in thread "main" java.lang.NullPointerException
    at pl.java.moj_pakiet.Tab.Wyswietl(Tab.java:62)
    at pl.java.moj_pakiet.Tab.main(Tab.java:22)

Czy to znaczy, że nie mogę utworzyć tablicy w funkcji?

edytowany 1x, ostatnio: madmike, 2011-08-06 16:29
Taguj wątki nazwą języka/środowiska... - madmike 2011-08-06 16:29

Pozostało 580 znaków

2011-08-06 16:44

Rejestracja: 14 lat temu

Ostatnio: 30 minut temu

0

Referencja tab2 w metodzie main dalej wskazuje na nulla.

Takie samo zachowanie jest w C++:

#include<cstdio>

void metoda(int *tablica) {
    tablica = new int[5];
}

int main(){
    int *tablica = NULL;
    metoda(tablica);
    printf("%d\n", tablica[3]);
    return 0;
}

"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

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