# Array von eigenem datentyp



## Javanewbie (24. Januar 2005)

hi,
 sorry is ne primitive frage finde aber leide rnichts dazu,
 und zwar will ich ein array das 2 dimensional ist mit 4 spalten 
 string Produktname  
 int Anzahl
 float preis
 float zwiaschensumme

 so dann habe ich mir überlegt ich amche ein eindimensionales array
 von nem eigen datentyp
 class datentyp{
 string Produktname  ="";
  int Anzahl =0;
  float preis=0;
  float zwiaschensumme=0;
 }

 datentyp[] meinarray=new datentyp[19];


 sodele und nun zu meinem prob 
 er meldet nen nullponiterexception weis aber net wie ich das löse

 mfg der newbie


----------



## Snape (24. Januar 2005)

Zeig mal, wie Du das array füllst.


----------



## torsch2711 (24. Januar 2005)

Sodelle,

also ich würde mal sagen, dass Du annimst, das Array sei, wenn du es so initialisierst schon mit werten gefüllt. Hier muss ich sagen: NEIN!

Du gibst hier nur die grösse vor, sprich du deklarierst ein Array deines Datentyps mit der grösse 19 (sprich von 0-18). Dieses musst du erst mit Werten vorbelegen, bevor du irgendwelche operationen darauf vollziehst. Damit bist du immer auf der sicheren Seite, selbst wenn sich das Array mit default Werten füllen sollte, weisst du nie genau ob es auf jeder plattform konsistent ist.


Gruss
Torsten


----------



## Javanewbie (24. Januar 2005)

das hab ich mir auch gedacht ;-)
 nur leider weis ich keienen ausweg denn sobald ich auf den/das array zugreifen will zb meinarray[2].name="HH";
 und es mit werten belegen will nada !
 nullpointerexception
 also muss es an meinem datentyp liegen oder?
 wenn ich den aber mit
 zb static String name=""; belege geht es zwar aber er ändert dann ALLE werte meinstes array ->komisch ?

 ich habe in java leider keine besonders große ahung und wiegesagt ich finde unter arrays bei vielen tutorials  auch hierzu nichts ,

 deswegen fände ich es nett wenn einer ders weis ;-)
 kurz postet wie mans richtig macht
 also array eindimensional auf eigenem datentyp

 merci


----------



## Franz Degenhardt (24. Januar 2005)

Lies doch mal, was torsch schreibt. Du musst jedes Element deines Arrays noch initialisieren. 

Nach diesem Ausdruck

```
datentyp[] meinarray=new datentyp[19];
```
gibt es ein Feld des Types datentyp in der Grösse 19.
Die Elemente des Feldes sind noch null.
Es fehlt etwas wie:


```
for (int i=0:i<meinarray.length;i++){
  meinarray[i] = new datentyp();
}
```
Danach funktionieren auch deine Zuweisungen.

Grüsse TrueSun


----------



## Javanewbie (24. Januar 2005)

Hi danke hatte es net geschnallt das ich jeweils noch mal dem array den datentyp zuweisen muss ;-)

 habe bisher nur in ada geprggt (da gibts solche sachen net)

 neue frage jetzt geht leider meine laden speicher funktion nicht mehr


```
DAtentyp:
 class datentyp {
   String name = "";
   int anzahl = 1;
   float preis = 0;
   float zwischensumme;
 }
 
 //
   static datentyp[] Datenbank = new datentyp[50];
 
 
 
     //füllen des arrays
     for (int i = 0; i < 50; i++) {
       Datenbank[i] = new datentyp();
     }
     Contain
 
 
 
 
  public void serialize(String filename) {
     try {
       FileOutputStream file = new FileOutputStream(filename);
       ObjectOutputStream o = new ObjectOutputStream(file);
       o.writeObject(Datenbank);
       o.close();
     }
     catch (IOException e) {
       System.err.println(e);
     }
   }
 
   static void deserialize(String filename) {
     try {
       FileInputStream file = new FileInputStream(filename);
       ObjectInputStream o = new ObjectInputStream(file);
       Datenbank = (datentyp[]) o.readObject();
       o.close();
     }
     catch (IOException e) {
       System.err.println(e);
     }
     catch (ClassNotFoundException e) {
       System.err.println(e);
     }
   }
```
 

 könntet ihr mir nochmals bitte helfen? wie schaffe ich es das er den array annimmt


 ps array war  zum einstieg was haltetihr von dynamschen strukturen Listen 
 für tabellen ist dasüberhaupt sinvoll?


----------



## Snape (24. Januar 2005)

Zeig mal kurz die Fehlermeldung oder die Stelle, an der nicht das gewünschte passiert.


----------



## Javanewbie (24. Januar 2005)

java.io.NotSerializableException: datentyp
 kommt wenn ich soeichern will!

 java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: datentyp
 beim laden

 jo jetzt wiemach ichs richtig?

 mfg


----------



## Franz Degenhardt (25. Januar 2005)

Hallo!

Um Objekte serialisieren zu können muss das Objekt das Interface Serializable implementieren. Näheres findest du hier: java-api: Serializable 

Versuchs mal mit 


```
class datentyp implements Serializable { ...
```

Grüsse TrueSun


----------

