Array von eigenem datentyp

Javanewbie

Grünschnabel
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
 
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
 
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
 
Lies doch mal, was torsch schreibt. Du musst jedes Element deines Arrays noch initialisieren.

Nach diesem Ausdruck
Code:
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:

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

Grüsse TrueSun
 
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

Code:
 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?
 
Zuletzt bearbeitet von einem Moderator:
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
 
Zurück