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

Tworzenie tablicy obiektów własnej klasy

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?

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)
		};
	}
}
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();
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);
}
0

@spartanPAGE
@bogdans

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

0

Można, np.

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

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