Przekazywanie tablicy z klasy do klasy

0

Cześć, jestem w trakcie tworzenia prostej aplikacji na tablicach bazującej na modelu MVC. Napotkałem problem, a mianowicie w klasie Model stworzyłem tablicę Stringów [100][3], gdzie 100 podawane jest jako parametr programu. Następnie dodałem do niej na sztywno parę elementów. Później z poziomu klasy Kontroler (w której utworzyłem obiekty klas Model i Widok) chcę przekazać tą tablicę jako argument z klasy Model do klasy Widok, żeby ją wyświetlić za pomocą funkcji displayTable, która otrzymuje tą tablicę jako argument. Niestety otrzymuje wyjątek NullPointerException w trakcie wypisywania tak jakby ta tablica była pusta. Co jest tego powodem? Linijka

theView.displayTable(theModel.clientTable);

wyrzuca wyjątek w klasie ApplicationController.

ApplicationController class

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package controller;

import model.ApplicationModel;
import view.ApplicationView;

import java.util.*;

/**
 * Kontroler to klasa zawierająca tylko jedną metodę statyczną: main, która
 * uruchamia resztę programu i wymienia informacje między elementami
 * aplikacji(model i widok).
 *
 * @author 
 * @version 1.0
 */
public class ApplicationController {
    
    private ApplicationModel theModel;
    private ApplicationView theView;
    
    public static void main(String[] args) {
        
        
        
        // przekazanie parametru (sztywnej ilości wierszy w tabeli) do modelu
        ApplicationModel theModel = new ApplicationModel(args[0]);
        ApplicationView theView = new ApplicationView();
        
        theView.displayTable(theModel.clientTable);
 
        
        
    }
    
}

ApplicationModel class

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package model;

import java.util.*;

/**
 *
 * @author 
 */
public class ApplicationModel {
    
    public String [][] clientTable;
    
    public ApplicationModel(String tableAmountString)
    {
        //konwersja argumentu String na Int
        int tableAmountInt = Integer.parseInt(tableAmountString);
        String [][] clientTable = new String[tableAmountInt][3];
        
        for(int i=0; i < clientTable.length; i++)
            for(int j=0; j < clientTable[i].length; j++)
                clientTable[i][j] = "empty";
        
        clientTable[0][0] = "Janek";    clientTable[0][1] = "Nowak";       clientTable[0][2] = "1";
        clientTable[1][0] = "Bogdan";   clientTable[1][1] = "Staropalski"; clientTable[1][2] = "2";
        clientTable[2][0] = "Jarosław"; clientTable[2][1] = "Nowowiejski"; clientTable[2][2] = "3";
        clientTable[3][0] = "Mietek";   clientTable[3][1] = "Korek";       clientTable[3][2] = "4";
        clientTable[4][0] = "Hanka";    clientTable[4][1] = "Dzbanek";     clientTable[4][2] = "5";
    }
    
    
    
}

ApplicationView class

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package view;

import java.util.*;
import java.lang.*;
/**
 *
 * @author 
 */
public class ApplicationView {
    
    public ApplicationView() {
        System.out.println("Witaj w testowej bazie klientów. Baza zawiera 5 przykładowych rekordów dla testów. W razie potrzeby można dodać ich więcej");
    }
    
    public void displayTable(String [][] table)
    {
        for(int i=0; i < table.length; i++)
            for(int j=0; j < table[i].length; j++)
                System.out.print(table[i][j]);
    }
}
1

W konstruktorze ApplicationModel stworzyłeś LOKALNĄ zmienną o takiej samej nazwie jak pole klasy! Do pola klasy nic nie przypisałes. Przestań programować lodówką. Normalne IDE od razu napisałoby ci że coś takiego robisz...

0

Wiedziałem, że jakiś epicko durny błąd... Wybacz nie jestem jeszcze jakoś bardzo dobry z programowania, każdemu się zdarza :) A IDE z którego korzystam to NetBeans więc taka dość konkretna lodówka :) Dziękuję za pomoc.

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