Wątek przeniesiony 2014-05-28 13:23 z Java przez bogdans.

Tworzenie tablicy obiektów własnej klasy

2014-05-28 13:10
Eri
0

Witam,
stworzyłem klasą która ma dwie składowe typu int. Próbuję zrobić tablicę obiektów tego typu jednak gdy próbuję zmienić wartość składowej pierwszego obiektu z tablicy to pojawia mi się następujący błąd:

Exception in thread "main" java.lang.NullPointerException
    at Test.main(Test.java:7)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

Mój kod:

public class Test {
    public static void main(String arg[]){
        DataARC dat[] = new DataARC[2];
        dat[0].setPositiondoor(5);
        dat[0].setTimeLight(5);
        dat[1].setPositiondoor(55);
        dat[1].setTimeLight(55);

        SaveSerialFile saveSerialFile = new SaveSerialFile();
        saveSerialFile.saveSF(dat,"/home/eri/lib/file.l");

    }
}

Gdy stworzę pojedynczy obiekt to wszystko działa bez zarzutu. Czy mógłby ktoś pomóc mi znaleźć co robię źle?

Pozostało 580 znaków

2014-05-28 13:13
0

Masz tablicę z miejscem na obiekty. Nie masz samych obiektów.

import java.util.*;
import java.lang.*;
import java.io.*;

class Dog{
    private int m_age;
    public Dog(int age){
        m_age = age;
    }
}

class Ideone{

    public static void main (String[] args) throws java.lang.Exception{
        Dog[] dogs = new Dog[]{
            new Dog(1),
            new Dog(2),
            new Dog(16)
        };
    }
}
edytowany 2x, ostatnio: spartanPAGE, 2014-05-28 13:17

Pozostało 580 znaków

2014-05-28 13:18
Eri
0

@spartanPAGE

Mogę to jakoś inaczej zrobić jakoś jednym poleceniem czy tworząc w każdym miejscu obiekt:

DataARC dat[] = new DataARC[2];
        dat[0] = new DataARC();
        dat[1] = new DataARC();
TEN kod również zadziała, przetestuj. - spartanPAGE 2014-05-28 13:21

Pozostało 580 znaków

2014-05-28 13:46
0

Taki też zadziała

Dog[] sfora = new Dog[1024];
for(int i=0;i<sfora.length;i++)
{
    sfora[i] = new Dog((i % 10)+2);
}

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans, 2014-05-28 13:46

Pozostało 580 znaków

2014-05-28 14:20
Eri
0

@spartanPAGE
@bogdans

A można jakoś zrobić dynamiczną tablicę swoich obiektów tak?

Pozostało 580 znaków

2014-05-28 14:33
0

Można, np.

System.out.print("Wielkosc sfory: ");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Dog[] sfera = new Dog[n];

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans, 2014-05-28 14:33

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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