[Java] Input von txt

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Straight-Edge, 23. Februar 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 23. Februar 2008
    Input von txt

    Code:
     
     Medizin[] medizinarray = new Medizin[10];
     String fileName = "w:/thp/medizin.txt" ;
     String line;
     
     try
     {
     BufferedReader in = new BufferedReader( new FileReader( fileName ) );
     int i=1;
     line = in.readLine();
     while ( line != null ) // continue until end of file
     {
     medizinarray[i].Name = line.toString();
     medizinarray[i].Zusatz = in.toString();
     medizinarray[i].Preis = Integer.parseInt(in.toString());
     i++;
     }
     in.close();
     }
     catch ( IOException iox )
     {
     System.out.println("Problem reading " + fileName );
     }
     }

    als Fehlermeldung kommt dann immer

    Code:
    Exception in thread "main" java.lang.NullPointerException
     at test.main(test.java:38)
    
    keine Ahnung wieso

    Meine txt datei sieht so aus

    Code:
    Schmerzmittel Tampganese
    Starkes Schmerzmittel
    8.99
    
    Knochenschwund
    Starkes Knochenverschwinden
    0.64

    So sieht meine Klasse Medizin aus

    Code:
    public class Medizin {
    
     protected String Name;
     protected String Zusatz;
     protected double Preis;
     
     public Medizin(String Name, String Zusatz, double Preis){
     this.Name=Name;
     this.Preis=Preis;
     this.Zusatz=Zusatz;
     }
    }
    

    Hat jemand eine Ahnung warum das so ist? Wenn ich nichts einlese funktioniert das auf jeden fall schon.

    Gruß SxE
     
  2. 23. Februar 2008
    AW: Input von txt

    protected bewirkt das die attribute von außen nicht veränderbar/sichtbar sind
    du wirst dafür setter und getter methoden schreiben müssen

     
  3. 23. Februar 2008
    AW: Input von txt

    du legst zwar durch Medizinarray[] med = new Medizin[10];
    speicher für das array selbst an, für die elemente des arrays musst du jedoch wieder speicher allokieren! das führt zu deiner exception!

    Auf jeden Fall brauchst du setter und getter für name, zusatz und preis oder du machst die membervariable public, mit protected kannst du so nicht drauf zugreifen!

    du lässt ausserdem i bei 1 weglaufen, in java beginnen arrays jedoch bei 0. beim 10ten medikament wirfts dich ebenfalls mit einer nullpointerexception auf wenn du i nicht auf 0 setzt!

    Code:
    medizinarray[i].Name = line.toString();
    medizinarray[i].Zusatz = in.toString();
    medizinarray[i].Preis = Integer.parseInt(in.toString());
    
    für name greifst du auf line zu, bei zusatz und preis verwendest du jedoch den bufferedreader ...
    du musst nach jedem zugriff auf line wieder
    Code:
    line = in.readLine();
    
    aufrufen und abfragen ob line nicht null ist!

    ein weiterer fehler der mir aufgefallen ist ist, dass du kommawerte auf integer parsen willst ... kann man machen, du verlierst jedoch dann die nachkommastellen!

    meine "quick and dirty"-lösung:

    Code:
     Medizin[] Medizinarray = new Medizin[10];
     String fileName = "c:/Medizin.txt" ;
     String line;
     
     try
     {
     BufferedReader in = new BufferedReader( new FileReader( fileName ) );
     int i=0;
     while ((line = in.readLine()) != null) // continue until end of file
     {
     Medizinarray[i] = new Medizin();
     Medizinarray[i].Name = line.toString();
     line = in.readLine();
     Medizinarray[i].Zusatz = line.toString();
     line = in.readLine();
     Medizinarray[i].Preis = Float.parseFloat(line.toString());
     i++;
     }
     in.close();
     }
     catch ( IOException iox )
     {
     System.out.println("Problem reading " + fileName );
     }
     }
    
     
  4. 24. Februar 2008
    AW: Input von txt

    Für Leute mit dem gleichen Problem

    Code:
    Medizin[] Medizinarray = new Medizin[10];
     String fileName = "w:/thp/medizin.txt" ;
     String name,bezeichnung,preis,line;
     System.out.println("AHOI");
     try
     {
     BufferedReader in = new BufferedReader( new FileReader( fileName ) );
     int i=0;
     while ((line = in.readLine()) != null) // continue until end of file
     {
     
     name=line.toString();
     if(((line = in.readLine()) != null))
     {
     bezeichnung=line.toString();
     if(((line = in.readLine()) != null)){
     preis=line.toString();
     Medizinarray[i] = new Medizin(name,bezeichnung,preis);
     }
     }
     i++;
     }
     in.close();
     }
     catch ( IOException iox )
     {
     System.out.println("Problem reading " + fileName );
     }
    es funktioniert einwandfrei!

    VIELEN VIELEN VIELEN DANK!
     
  5. 24. Februar 2008
    AW: Input von txt

    ~closed~
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.