Daten einlesen und addieren
Kai
- java
0 Biesterfeld0 Kai0 Biesterfeld0 Kai
1 Slyh
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?
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
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?
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
Danke für eure Hilfe ich habe es hinbekommen, war ja dann doch einfacher als ich gedacht habe :-)
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