Kai: Daten einlesen und addieren

Hallo liebes Forum ich hoffe jemand kann mir weiterhelfen, ich lese aus einer Datei "traffic.csv" Daten ein, die Datei ist so aufgebaut
.
.
.
08.05.2005;18:44:00;08.05.2005;22:35:00;03:50:46;5518136;139049040
.
.
.

ist Handelt sich um viele Verbindungsdaten, jetzt muss ich die Daten aus dem letzen Felde addieren und ausgeben , so nun mal mein Verusch ich lese die Datei ein und gebe die alle 6. Positionen aus

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.FileReader;
import java.io.IOException;

public class verbindungen
{
     public int empfangenenBytes()
    {
        int umsatz = 0;
        String zeile;
        try{
            BufferedReader File = new BufferedReader(new FileReader("traffic.csv"));
            zeile = File.readLine();
            while (zeile != null)
            {
                String[] daten = zeile.split(";");
                 umsatz = Integer.parseInt(daten[6]);
                zeile = File.readLine();
                System.out.println(umsatz);
            }

File.close();
        }
        catch (IOException e) {
           System.out.println("Fehler beim einlesen der Datei.");
        }
        return umsatz;
    }

}

mein Problem ist jetzt wie ich die Zahlen addieren kann? Kann mir jemand helfen?

  1. Hej,

    mein Problem ist jetzt wie ich die Zahlen addieren kann? Kann mir jemand helfen?

    Mit dem "+"-Operator?

      
       String[] daten = zeile.split(";");  
       umsatz += Integer.parseInt(daten[6]);  
              ^  
       zeile = File.readLine();  
       System.out.println(umsatz);  
    
    

    Beste Grüße
    Biesterfeld

    --
    Ingenieur: Wie funktioniert das?
    Ökonom: Wieviel kostet das?
    Informatiker: Ketchup oder Mayo?
    1. Hej,

      mein Problem ist jetzt wie ich die Zahlen addieren kann? Kann mir jemand helfen?
      Mit dem "+"-Operator?

      String[] daten = zeile.split(";");
         umsatz += Integer.parseInt(daten[6]);
                ^
         zeile = File.readLine();
         System.out.println(umsatz);

      
      > Beste Grüße  
      > Biesterfeld  
      
      Hallo und danke für deine Antwort nur kommt dann komischerweise eine negativa Zalh raus -53483942...  
      Wie kann ich denn umsatz in ein Array speichern, damit ich das Array durchlaufen und so addieren kann?  
      
      
      1. Hej,

        Hallo und danke für deine Antwort nur kommt dann komischerweise eine negativa Zalh raus -53483942...

        Dann solltest du vielleicht Umsatz vom Typ long deklarieren.

          
          BufferedReader File = new BufferedReader(new FileReader("traffic.csv"));  
          // Bestimme anzahl der Zeilen anzZ  
          long[] umsatz = new long[anzZ]  
          int i = 0;  
          while ((zeile = file.readLine()) != null){  
             String[] daten = zeile.split(";");  
             umsatz[i++] = Integer.parseInt(daten[6]);  
          }  
          long gesamtumsatz;  
          for(int j = 0; j < umsatz.length; j++){  
            gesamtumsatz += umsatz[j];  
          }  
        
        

        Beste Grüße
        Biesterfeld

        --
        "Das der Weg zur dunklen Seite ist!"
        1. Danke für eure Hilfe ich habe es hinbekommen, war ja dann doch einfacher als ich gedacht habe :-)

  2. Hallo,

    public class verbindungen
    {
         public int empfangenenBytes()
        {
            int umsatz = 0;

    int umsatzGesamt = 0;

    String zeile;
            try{
                BufferedReader File = new BufferedReader(new FileReader("traffic.csv"));

    Schreib "File" klein. Es ist eine Variable, und kein Klassenname.

    zeile = File.readLine();
                while (zeile != null)
                {
                    String[] daten = zeile.split(";");
                    umsatz = Integer.parseInt(daten[6]);
                    zeile = File.readLine();
                    System.out.println(umsatz);

    umsatzGesamt += umsatz;

    }

    Oder, besser:

      
                 while ((zeile = file.readLine()) != null)  
                 {  
                     String[] daten = zeile.split(";");  
                     umsatz = Integer.parseInt(daten[6]);  
                     System.out.println("Einzelumsatz: " + umsatz);  
                     umsatzGesamt += umsatz;  
                 }  
      
                 System.out.println("Gesamtumsatz: " + umsatzGesamt);
    

    File.close();
            }
            catch (IOException e) {
               System.out.println("Fehler beim einlesen der Datei.");
            }

    return umsatzGesamt;

    }

    }

    Übrigens schachtelt man IO-Zugriffe besser in einem try-catch-finally.
    Etwa so:

      
      Reader file = null;  
      try {  
        // Datei öffnen und lesen, aber _nicht_ schließen.  
      } catch (FileNotFoundException e) {  
        // Mach was.  
      } catch (IOException e) {  
        // Mach was.  
      } finally {  
        try { file.close(); } catch (Throwable t) { /* Ignorieren */ }  
      }  
    
    

    Hintergrund:
    Dateien sollten _immer_ geschlossen werden. Auch dann, wenn ein Lese-
    fehler (oder was vergleichbares) aufgetreten ist. Dies wird durch
    das Schließen im finally-Block gesichert. Dieser Block wird _immer_
    ausgeführt. Tritt eine Exception auf, wird diese vorher behandelt,
    und dann der finally-Block aufgerufen. Tritt keine Exception auf,
    wird der finally-Block nach der Ausführung des try-Blocks ausgeführt.

    Es ist so sichergestellt, daß die Datei geschlossen wird.
    Hier kann man dann auch gerne Throwable fangen -- was man sonst
    tunlichst vermeiden sollte -- weil man bei einem Fehler im close()
    sowieso nichts mehr tun kann.
    (Hier kann übrigens auch eine NullPointerException auftreten, falls
    "file" noch nicht initialisiert wurde, also null ist. Da wir aber
    Throwable abfangen und ignorieren, stört das auch nicht weiter.)

    Will man auch bei close() eine Behandlung durchführen, sollte man
    natürlich nicht Throwable, sondern höchstens Exception fangen, da
    Throwable auch Error fängt, was man auch möglichst unterlassen sollte,
    wenn man daraufhin noch weiteren Code ausführt.
    Natürlich muß man bei expliziter Behandlung vorher prüfen ob "file"
    schon gesetzt, also ungleich null ist.

    Gruß
    Slyh