Blad podczas tworzenia zmiennej typu klasa

0

Witam
Kod klasy Ziomek:

package cwiczenia;
import java.util.*;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
/**
 *
 * @author Kamil
 */
public class Ziomek {
    private String imie;
    private String nazwisko;
    private Indeks indeks;
    int ile;
    
    
    public Ziomek(int ile){
        imie = "brak";
        nazwisko = "brak"; 
       this.ile = ile;
     indeks.oceny = new int[5];
     indeks.przedmioty = new String[5];
        
       
    }
    public void podaj() throws FileNotFoundException{
        try (PrintWriter zapis = new PrintWriter("ilosc.txt")) {
            Scanner wpisz = new Scanner(System.in);
            System.out.println("podaj imie: ");
            imie = wpisz.nextLine();
            System.out.println("podaj nazwisko: ");
            nazwisko = wpisz.nextLine();
            System.out.println("podaj przedmioty: ");
            for(int i=0;i<indeks.oceny.length;i++){
                indeks.oceny[i]= wpisz.nextInt();
                
                zapis.print(indeks.oceny[i]);
            }
        }
    }
 
}

Kod klasy indeks:

 * and open the template in the editor.
 */
package cwiczenia;
import java.util.*;
/**
 *
 * @author Kamil
 */
public class Indeks {
   public String przedmioty[];
    public int oceny[];
    
}

Chcac wpisac zawartosc to tablicy z klasy indeks ktorej uzywam w klasie Ziomek wyskakuje mi blad:

Exception in thread "main" java.lang.NullPointerException
	at cwiczenia.Ziomek.podaj(Ziomek.java:37)
	at cwiczenia.Cwiczenia.main(Cwiczenia.java:15)

1

Masz niezainicjalizowaną zmienną index.

0
 * and open the template in the editor.
 */
package cwiczenia;
import java.util.*;
/**
 *
 * @author Kamil
 */
public class Indeks {
   public String przedmioty[];
    public int oceny[];
 
}

Coś mi się wydaje, że tablice (array) się inaczej tworzy. Nie mówiąc już o tym, że nie bardzo widzę sens istnienia tej klasy w powyższej formie.

0

a jak to poprawic ?

0
index = new Index();

albo wczesniej razem z deklaracją:

Index index = new Index();
0

@morgutrin:
Pytasz o tę niezainicjowaną zmienną, czy klasę? Jeśli to pierwsze, to kzkzg wyjaśnił. Jeśli to drugie:

public String przedmioty[];
public int oceny[];

To nie są tablice, tylko zwykłe zmienne (int i String). Nie mówiąc już o tym, że można by tu dać jakiś konstruktor.
Na przykład:

 * and open the template in the editor.
 */
package cwiczenia;
import java.util.*;
/**
 *
 * @author Kamil
 */
public class Index {
   public String[] przedmioty;
    public int[] oceny;

   public Index(String[] przedmioty, int[] oceny) {
   this.przedmioty = przedmioty;
   this.oceny = oceny;
   }
}

i wtedy:

Index index = new Index(new String[5], new int[5]);
0

Kod ode mnie poniżej został na szybko zmajstrowany w Sublime, więc nie ma pewności, że działa. Tylko się umówmy - kod w tym wykonaniu jest tragiczny. Sytuacji, które tutaj mogą pójść źle jest stanowczo za dużo (moim zdaniem). Oczywiście od Ciebie zależy czy drążyć dalej, czy zostawić.

package cwiczenia;
import java.util.*;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
/**
 *
 * @author Kamil
 */
public class Ziomek {
    private String imie;
    private String nazwisko;
    private Indeks indeks;
    int ile;
 
    public Ziomek(){
        imie = "brak";
        nazwisko = "brak"; 
    }

    public void podaj() throws FileNotFoundException{
        try (PrintWriter zapis = new PrintWriter("ilosc.txt")) {
            Scanner wpisz = new Scanner(System.in);
            
            System.out.println("podaj imie: ");
            imie = wpisz.nextLine();
            
            System.out.println("podaj nazwisko: ");
            nazwisko = wpisz.nextLine();
            
            System.out.println("podaj liczbe ocen: ");
            int ile = wpisz.nextInt();

            indeks = new Indeks(ile);

            System.out.println("podaj przedmioty: ");
            for(int i=0;i<indeks.oceny.length;i++){
                indeks.dodajOcene(wpisz.nextInt());
 
                zapis.print(indeks.pobierzOcene(i));
            }
        }
    }
}
package cwiczenia;
import java.util.*;
/**
 *
 * @author Kamil
 */
public class Indeks {
   
   private String przedmioty[];
   private int oceny[];
   private int licznik;

   public Indeks(int ile) {
   	przedmioty = new String[ile];
   	oceny = new int[ile];
   }

   public void dodajOcene(int ocena) {
   	oceny[licznik++] = ocena;
   }

   public void dodajOcene(int ocena, int numer) {
   	oceny[numer] = ocena;
   }

   public int pobierzOcene(int numer) {
   	return oceny[numer];
   }
 
}

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