Input/Output IO Anwendung

LemE.Tweakit

Mitglied
Ich habe ein kleines Problem mit meiner Klasse hier.

Es soll ein Binärstream von int zahlen mit Hilfe von FileInputStream und DataInputStream eingelesen werden. die zahlen möchte ich nach merkmalen(gerade, ungerade, negativ) sortiert in klassenvariablen speichern.
Anschliessend möchte ich die Anzahlen in einem String über den BufferedWriter an den FileWriter übergeben und in der datei anzahl.txt speichern.

irgendwie stehe ich wohl grad dumm auf dem schlauch. für ein paar denkanstösse wäre ich euch dankbar....
Das Problem ist, dass die Datei anzahl.txt leer ist aber erstellt wird.
ich bin mir nicht ganz sicher ob es nun am Stream liegt oder an meinen Daten die ich da abspeichern will, wobei ich das Gefühl habe dass es zweiteres ist....

Java:
import java.io.*;
public class ZahlenZaehlen {

	static int gerade=0;
	static int ungerade=0;
	static int negativ=0;
	public static void main (String[]args){
		FileInputStream fis_ref;
		DataInputStream dis_ref;
		BufferedWriter bw_ref;
		FileWriter fw_ref;
		
		int merker=0;
		boolean EOF=false;
		
		try{
			fis_ref=new FileInputStream(".\\zeichendatei");
			dis_ref=new DataInputStream(fis_ref);
			
			fw_ref=new FileWriter(".\\anzahl");
			bw_ref=new BufferedWriter(fw_ref);
			
			int zahl=1;
			while(EOF==false){
			
				merker= dis_ref.readInt();
				addiereZahl(merker);
				System.out.println(zahl +"te Zahl gelesen");
				zahl++;
				
			}//endwhile
			String daten_ref=schreibeText();
			bw_ref.write(daten_ref);
			
			fis_ref.close();
			dis_ref.close();
			bw_ref.close();
			fw_ref.close();
			
		}catch(EOFException e_ref){
			EOF=true;
		}catch(Exception e_ref){
			System.out.println(e_ref.getClass().getName());
			System.out.println(e_ref.getClass().getDeclaredClasses());
			if(e_ref.getMessage()!=null)
				System.out.print(e_ref.getMessage());
			else
			{System.out.print("unbekannter Fehler");
			}
		}//endtrycatch
	}
	
	static void addiereZahl(int merker){
		if(merker<0)
			negativ++;
		if((merker%2)==0)
			gerade++;
		else
			ungerade++;
	}//endmethod
	
	static String schreibeText(){
		String ausgabe= ("Anzahl gerade Zahlen " + Integer.toString(gerade)+ "\r\n"+"Anzahl ungerade Zahlen: "+Integer.toString(ungerade)+"\r\n"+ "Anzahl negative Zahlen: "+Integer.toString(negativ)+"\r\n");
		return ausgabe;

	}//endmethod
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
es ist sehr wichtig, nachzuvollziehen, was im Programm passiert, nicht nur nach deinem Plan, sondern auch die Realität absichern

[c]System.out.println(zahl +"te Zahl gelesen");[/c]
ist schon was gutes, siehst du entsprechende Ausgaben?

Zeile 34 ist die einzige Zeile, die schreibt, da musst du auch eine Ausgabe setzen, kommt die Ausführung dort überhaupt vorbei?

denn das ist zu bezweifeln, EOF wird in der Schleife nicht geändert, maximal wird mit Exception abgebrochen
(wieder, und immer gilt: mit Ausgabe absichern!),
dann jedenfalls geht es in Zeile 42 weiter, 33-39 werden übersprungen,
das könnte alles hinter dem try/catch stehen, für die close() sicher neues try/catch
 

LemE.Tweakit

Mitglied
ah ich verstehe...
Ich muss die EOFException innerhalb der while Schleife fangen
Wenn ich das mache kommt die Ausführung auch an meiner bw_ref.write() vorbei und das ganze wird auch geschrieben.

Ich danke dir vielmals für diese super Erklärung... ich hab heute um 13 Uhr eine Prüfung und diese Erkenntnis kommt wie gerufen :))
Ich wünsch dir alles gute und nochmal tausend Dank
Viele Grüße
 

anti-held

Bekanntes Mitglied
Es sollte keine Exception absichtlich passieren.
Du musst nur dein EOF auf true setzten, falls das File aus ist, um aus der Schleife herauszukommen.
 
S

SlaterB

Gast
> falls das File aus ist
ist dabei der Knackpunkt, wie das feststellen? hättest du dann auch ausführen können,

available() wäre dafür möglicherweise geeignet, ich persönlich würde aber nicht mein Leben drauf verwetten,
schaut nur in eigenen Buffer, wartet nicht auf verzögerte Daten aus Netzwerk usw.

als robust habe ich kennengelernt mit BufferedReader ganze Zeilen einzulesen bis nur noch null kommt, ohne Exception,
bei ObjectInputStream nicht möglich, da ist Exception Standard

wenn dann kann der Test jedenfalls gleich in die Schleife, EOF fällt weg
 

LemE.Tweakit

Mitglied
also ich dank dir nochmal für deine zweite Erläuterung Slater.
Ich kenne das auch mit dem BufferedReader auf null zu testen in der Schleife. Ich bin mir grade nicht sicher aber man kann das doch auch zb mit einem DataInputStream machen und dis_ref.read() auf den Wert -1 prüfen. Wenn ich mich da jetzt nicht vertue.

Ich bin mir nur nicht ganz sicher warum das fangen der EOF exception Problematisch sein soll wie Antiheld in den Raum geworfen hat. Mein Prof hat das selbst in seinen Beispielen verwandt neben den anderen prüfkriterien die genannt wurden. Ich hab das für ne gängige Praxis gehalten, auch wenn es mir zu denken gegeben hat dass er das jedesmal anders macht.
 
S

SlaterB

Gast
> und dis_ref.read() auf den Wert -1 prüfen
was aber ein Byte liest, verbraucht, welches Teil eines ints gewesen sein könnte,
man kann natürlich die Bytes sammeln und danach noch neu interpretieren, möglich ist vieles

eine Exception zu vermeiden ist immer wünschenswert wenn möglich,
das klassischste Beispiel ist sicher null:
[c]if (x == null) { Fall A } else { Fall B }[/c]
statt Fall A im catch zum normalen Zugriff..

im dem Beispiel allein schon, weil eine NullPointerException verschiedene Ursachen haben kann, EOF ist spezifischer

eine Exception ist eine aufwendige Sache, wildes Herumspringen im Kontrollfluss
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
P JavaFX Anwendung beendet sich selbst nur als Jar Allgemeine Java-Themen 40
OSchriever Externe Anwendung beenden Allgemeine Java-Themen 41
I Eine Anwendung so gut wie möglich beschützen Allgemeine Java-Themen 9
J exe Anwendung CPU-/Speicherverbauch Allgemeine Java-Themen 5
alderwaran Hoher Sys-Load bei Multithreaded Anwendung Allgemeine Java-Themen 8
S Anwendung die alle Abhaengigkeiten einer Library listet..? Allgemeine Java-Themen 5
P Methoden Anwendung der allMatch()-Methode Allgemeine Java-Themen 5
D Anwendung öffnet hinter Taskleiste Allgemeine Java-Themen 7
I Anwendung auf Netzlaufwerk von mehreren Usern gleichzeitig nutzbar. Allgemeine Java-Themen 3
A Garbage Collector in NetBeans vs. exe Anwendung Allgemeine Java-Themen 33
D Java Anwendung mit dll File Allgemeine Java-Themen 5
B JAVA Prozesse in einer eigenen Anwendung laufen lassen Allgemeine Java-Themen 9
D RMI Einfache Chat-Anwendung mit RMI Allgemeine Java-Themen 0
J Jasper ireport - wieso beendet die Anwendung wenn ich die Preview schließe Allgemeine Java-Themen 1
Tort-E Datenmodell / Struktur der Anwendung Allgemeine Java-Themen 4
E Anwendung verhält sich unter Mac anders als Unter Windows. Allgemeine Java-Themen 4
S Anwendung zum ausrechnen der Differenz von zwei Tagen Allgemeine Java-Themen 9
B Web-Anwendung funktioniert mit Java 1.8, aber nicht mit Java 1.7 (auf Client) Allgemeine Java-Themen 5
L Stack overflow bei einer endrekursiven Funktion (Anwendung: Spezialform des Package Merge) Allgemeine Java-Themen 4
P Anwendung läuft nur mit JDK Allgemeine Java-Themen 2
D Java-Anwendung mit DB, GUI, etc. Allgemeine Java-Themen 3
D OOP Design Pattern für GUI - Datenbank Anwendung Allgemeine Java-Themen 1
F Unlimited Strength Policy. Frage Verbreitung der Anwendung Allgemeine Java-Themen 1
T Bot für Mql-Anwendung Allgemeine Java-Themen 10
F Java Anwendung Remote starten geht nicht Allgemeine Java-Themen 0
D neuen Prozess starten und anwendung beenden. Allgemeine Java-Themen 3
M Suche Framework/API für Monitoring-Anwendung Allgemeine Java-Themen 3
M Problem beim Starten der Anwendung Allgemeine Java-Themen 3
C Anwendung läuft nicht auf Mac OS X Allgemeine Java-Themen 2
M Java Anwendung ausführen Allgemeine Java-Themen 5
eskimo328 Swing Client Anwendung für MAC OS (Update Routine) Allgemeine Java-Themen 6
M Process wird gestoppt und nach beenden der Anwendung fortgeführt Allgemeine Java-Themen 4
J Interpreter-Fehler Anwendung startet nicht Allgemeine Java-Themen 5
W Framework für RichClient Anwendung? Allgemeine Java-Themen 4
D Mini Webserver für GUI Anwendung Allgemeine Java-Themen 5
Ollek MVC - Anwendung auf mein Projekt Allgemeine Java-Themen 18
U (Land-)Karten in Java Anwendung einbinden (GoogleMaps/OpenStreetMap) Allgemeine Java-Themen 7
S "Katalog"-Anwendung in Java eine gute Idee? Allgemeine Java-Themen 12
S Wie eine verteilte Anwendung in die Cloud? Allgemeine Java-Themen 4
E Anwendung nutzt plötzlich nicht mehr 100% CPU Allgemeine Java-Themen 2
R Geht das? JRE 1.4 global, 1.6.20 nur für eine Anwendung? Allgemeine Java-Themen 9
K Anwendung bringt JAVA Speicherfehler Allgemeine Java-Themen 11
C Java Anwendung nur einmalig starten Allgemeine Java-Themen 10
eskimo328 Offline/Online Web-Anwendung, Datensynchronisation etc. Allgemeine Java-Themen 9
E Anwendung starten Allgemeine Java-Themen 3
W Java Anwendung in HTML Allgemeine Java-Themen 2
DEvent Aktuelle Uhrzeit per Anwendung Allgemeine Java-Themen 4
C Idee für Anwendung/ Bücher Allgemeine Java-Themen 8
Y Anwendung starten(JAR) - Entscheidung Konsole oder Swing Allgemeine Java-Themen 5
P Java Anwendung mehr Speicher zur Verfügung stellen?? Allgemeine Java-Themen 3
C Kontextmenü erweitern und mit Java Anwendung verknüfen. Allgemeine Java-Themen 3
7 Problem mit webbasierter Anwendung Allgemeine Java-Themen 6
D Java Anwendung in der Shell Allgemeine Java-Themen 5
D Versuch Server - Client anwendung Allgemeine Java-Themen 9
T Welcher Server? JSP und Client-Anwendung Allgemeine Java-Themen 4
M Anwendung des MVC Konzepts Allgemeine Java-Themen 7
R Ausführbare Java Anwendung Allgemeine Java-Themen 27
A Java-Anwendung "richtig" schließen ohne JVM zu beenden Allgemeine Java-Themen 2
B In Anwendung jar file bauen Allgemeine Java-Themen 2
A Webspace für Grails-Anwendung Allgemeine Java-Themen 3
M WebStart Anwendung nicht dauerhaft Cachen Allgemeine Java-Themen 3
A An alle Cracks: Anwendung beenden mit ShutdownHook? Allgemeine Java-Themen 13
D Anwendung startet im Remote Desktop nicht Allgemeine Java-Themen 14
S Testen einer Anwendung durch klicken von Koordinaten Allgemeine Java-Themen 7
M SMS aus Desktop-Anwendung verschicken Allgemeine Java-Themen 8
G Unterschied Enterprise Anwendung und Web Anwendung Allgemeine Java-Themen 30
? Swing Anwendung aus Konsole starten Allgemeine Java-Themen 7
G Weboberfläche für Java Anwendung? Allgemeine Java-Themen 10
Y ProcessBuilder, Prozess wird gestartet, aber Anwendung nicht Allgemeine Java-Themen 5
S jar aus anwendung heraus ausführen Allgemeine Java-Themen 2
J Konsolen Anwendung mit while(true) Allgemeine Java-Themen 6
-MacNuke- Frage zu einer 3-Tier Anwendung Allgemeine Java-Themen 9
M Anwendung nur einmal starten / Zeichen in String zählen Allgemeine Java-Themen 7
F Hilfe beim Starten einer Java Anwendung unter Windows gesuch Allgemeine Java-Themen 8
L Java 1.5 - Anwendung unter 1.6 JRE sehr langsam geworden Allgemeine Java-Themen 8
B getResourceAsStream - standalone Anwendung vs. Web-Anwendung Allgemeine Java-Themen 2
J I18n einer existierenden Anwendung Allgemeine Java-Themen 2
C Java-Anwendung beenden Allgemeine Java-Themen 3
G Auslesen mit welcher Java-Version Anwendung kompiliert wurde Allgemeine Java-Themen 2
C Anwendung nur einmal Starten Allgemeine Java-Themen 11
Z Uralt-Applet in JFrame Anwendung konvertieren Allgemeine Java-Themen 12
J OpenOffice.org Events in eigene Anwendung umleiten Allgemeine Java-Themen 4
T Socket Server Anwendung - Empfang eines Byte-Arrays Allgemeine Java-Themen 7
G Datenbank-Anwendung schnell erstellen. Allgemeine Java-Themen 7
M Versionswechsel bei einer Web-Anwendung Allgemeine Java-Themen 5
A Client/Server-Anwendung Allgemeine Java-Themen 3
G java als anwendung? Allgemeine Java-Themen 11
N externe Anwendung aktivieren (nicht starten!) Allgemeine Java-Themen 3
L Speicherverbrauch einer Anwendung unter Windows Allgemeine Java-Themen 2
C Fehler bei der Anwendung von Transformen. Allgemeine Java-Themen 2
M 1. Probleme mit MouseListener, 2. Anwendung in Infobar Allgemeine Java-Themen 8
P Anwendung minimiert starten Allgemeine Java-Themen 11
G Java Anwendung für Multi-User Allgemeine Java-Themen 2
N Linux-Commands über Java Anwendung ausführen Allgemeine Java-Themen 12
E Anwendung ließt .ini-Datei nicht Allgemeine Java-Themen 3
M Java-Anwendung von CD-ROM Allgemeine Java-Themen 19
E externe Anwendung aufrufen und sich selbst beenden Allgemeine Java-Themen 8
M Datei auf Anwendung ziehen und starten Allgemeine Java-Themen 11
T unsatisfiedlinkerror -> Diese Anwendung konnte nicht gest Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben