Einlesen von "keinem Zeichen" per readLine()

Status
Nicht offen für weitere Antworten.

babuschka

Top Contributor
Guten Abend zusammen,
ich habe mir ein kleines Programm geschrieben, welches mir Werte aus einer Textdatei einliest.
Ich würde nun gerne den Fall betrachten, falls z.B nur 2 anstatt meiner 3 Werte in der Textdatei stehen...also "kein Zeichen" eingelesen wird.

Hier mal ein Ausschnitt:

Code:
		try {
			
			String s;
			
			s = is.readLine();
			
			if (s.equals(""))
				throw new Exception("Kein Zeichen gefunden");
			
			int temp = Integer.parseInt(s); }

		catch (Exception e) {
			//e.printStackTrace();
			System.out.println("Error: " + e.getMessage()); 
			return; }

Der Fehler heißt immer:
Code:
Error: For input string: ""

Meine Textdatei sieht so aus (Inhalt):
Code:
(hier steht nichts)
TRUE
FALSE

Ich verstehe das nicht, wenn er schon den Fehler ausgibt, dass er "" nicht lesen konnte, müsste s.equals("") klappen, oder?[/code]
 
S

stev.glasow

Gast
prüf mal s auf null - wenn nichts mehr zu lesen ist also das datei ende erreicht ist liefert readline null und nicht "". "" liefert es nur wenn deine datei z.b. so aus sieht 3\n4\n\n sprich wenn dort eine leere zeile enthalten ist
[edit] bin ich stoned oder hast du grad deinen post geändert
 
S

SlaterB

Gast
klingt in der Tat mysteriös, aber in Java gibts keine Rätsel,
du kannst doch zwischen Zeile 7 und 8 loggen:
System.out.println(s, s.length, notfalls s als char-Array)
 

babuschka

Top Contributor
Also mit

Code:
s == null
kommt der gleiche Fehler.

@stevq
Ich habe nur eben noch den Inhalt meiner Textdatei zugefügt.
 

Murray

Top Contributor
Möglicherweise enthält der String irgendwelche Whitespace-Characters? Um das herauszufinden, könntest Du den String in ein char-Array wandeln und das mal ausgeben lassen:
Code:
char[] chars = s. toCharArray();
for ( int i=0; i<chars.length; i++) {
  final char c = chars[i];
  System.out.println( "#" + i + ": " + (int)c + " '" + c + "'");
}
 

Murray

Top Contributor
<off-topic>
PaddyW hat gesagt.:
Code:
		catch (Exception e) {
			System.out.println("Error: " + e.getMessage());
Das ist - wie man hier sieht - nicht so gut; getMessage() liefert nur den optionalen Text, der a) nicht aussagt, was für eine Exception aufgetreten ist und b) auch nicht bei allen Exceptions einen Wert liefert.

Besser:
Code:
		catch (Exception e) {
			System.out.println("Error: " + e.getClass().getName) + " (" + e.getMessage() + ")");
oder gleich
Code:
		catch (Exception e) {
			System.out.println("Error: " + e);
</off-topic>
 
S

SlaterB

Gast
> Also hier zeigt er mir nichts an.

vorher noch ne Ausgabe wie
System.out.println("aktuelles s ist: "+s+", "+s.length());
wenn diese Ausgabe nicht kommt dann hast du eh ganz andere Probleme (falsches Programm oder so)

wenn der String wirklich Länge 0 haben sollte, was dazu führen würde dass die Schleife nicht durchlaufen wird,
dann musst du dir mal ernsthaft deinen Vergleichsstring anschauen, ist der wirklich ""?
gib auch von dem die Länge aus

verwende nicht string.equals(string), obwohl doch, verwende das und gib das Ergebnis mit System.out.println() aus, erscheint true oder false?

bei false jedenfalls verwende dann mal ein eigenes equals,
aus String kopiert:

Code:
    public boolean equals(Object anObject) {
	if (this == anObject) {
	    return true;
	}
	if (anObject instanceof String) {
	    String anotherString = (String)anObject;
	    int n = count;
	    if (n == anotherString.count) {
		char v1[] = value;
		char v2[] = anotherString.value;
		int i = offset;
		int j = anotherString.offset;
		while (n-- != 0) {
		    if (v1[i++] != v2[j++])
			return false;
		}
		return true;
	    }
	}
	return false;
    }

alles davon wirst du nicht nachbauen können, im Grunde nur die Schleife über die chars, und da wird ja nicht viel passieren wenn beide Länge 0 haben..

auf innere Werte wie count oder offset könntest du nur mit Reflection zugreifen

---

gib auch mal die hashCode()-Werte beider Strings aus
 

babuschka

Top Contributor
Kompiliert habe ich gerade neu. Auch an dem Zusatz mit trim() lag es nicht?!

Hat es evtl. was damit zu tun, dass ich die Textdatei mit Linux erstellt habe und es evtl. irgendwas mit UTF-8 zu tun hat?!

Die Länge (s.length) ist 0!
 
S

SlaterB

Gast
kannst ja mal die Datei hochladen/ per Mail schicken + dein vollständiges Programm posten
(slaterb at gmx de)
 

babuschka

Top Contributor
BufferedReader is = new BufferedReader(new InputStreamReader(System.in));

@slaterb
Danke für das Angebot. Würde aber gerne noch ein wenig selbst weiterarbeiten. Komme später aber gerne darauf zurück.

@stevg
Bei "if (s.length() == 0)" bleibt alles gleich. Keine Änderung.
 

Murray

Top Contributor
Was wird denn bei
Code:
System.out.println( "s: <" + s + ">");
System.out.println( "s.length(): " + s.length());
System.out.println( "s.trim(): <" + s.trim() + ">");
System.out.println( "s.trim().length(): " + s..trim().length());
char[] chars = s. toCharArray();
for ( int i=0; i<chars.length; i++) {
  final char c = chars[i];
  System.out.println( "char #" + i + ": " + (int)c + " '" + c + "'");
}
ausgegeben?
 
S

SlaterB

Gast
s.length() ist also 0 aber if (s.length() == 0) liefert kein true, aja,
langsam muss dir doch auffallen, dass in deinem Programm nichts nach Plan läuft oder du die Ergebnisse falsch deutest
 
S

stev.glasow

Gast
Murray hat gesagt.:
Aber da das trim() auch nicht geholfen hat, scheint das Problem ja vielleicht doch ganz woanders zu liegen.
PaddyW hat gesagt.:
@stevg
Bei "if (s.length() == 0)" bleibt alles gleich. Keine Änderung.
denke auch dass das problem weder an der datei noch an dem stück code den du gepostet hast liegt.
[edit] hier is ja was los :)
 
S

SlaterB

Gast
@Murray: Ergänzung:
System.out.println( "s: <" + s + ">");
System.out.println( "s.length(): " + s.length());
System.out.println( "s.length() == 0? " + (s.length() == 0));
if (s.length() == 0) {
System.out.println( " geht doch ");
}
System.out.println( "s.trim(): <" + s.trim() + ">");
..
 

Murray

Top Contributor
@Slater: OK, damit würde man den Fall abdecken, dass der Ausdruck s.length() etwas zurückliefert, dessen String-Repräsentation "0" ist, was aber aber nicht objektidentisch mit der int-Konstante 0 ist. Da String#length() nunmal einen int liefert, müsste es also einen int geben, dessen String-Repräsentation "0" ist, der aber trotzdem nicht identisch mit dem Wert 0 ist. Ich hoffe doch mal stark, dass das nicht möglich ist.
 
G

Gast

Gast
Wundert sich niemand über sein Integer.parseInt(), welches er scheinbar nicht auf Strings mit Zahlen anwenden will und seinem return in der Catch Klausel?
 

Ebenius

Top Contributor
Gast hat gesagt.:
Wundert sich niemand über sein Integer.parseInt(), welches er scheinbar nicht auf Strings mit Zahlen anwenden will und seinem return in der Catch Klausel?

Nein. Alle wundern sich, dass die falsche Exception kommt. Lies mal genauer, ich hab's gestern auch fast falsch verstanden.

Grüße, Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Variable Zimmergrößen per scanner einlesen Java Basics - Anfänger-Themen 5
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
S SeriellenPort einlesen Java Basics - Anfänger-Themen 3
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
S JSON einlesen und benutzen Java Basics - Anfänger-Themen 5
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
M Einlesen > new Leser Java Basics - Anfänger-Themen 5
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
S CSV einlesen und mit Komma trennen Java Basics - Anfänger-Themen 12
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
L Datein einlesen Java Basics - Anfänger-Themen 1
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
M Einzelzeichen einlesen Java Basics - Anfänger-Themen 2
C (char) Array einlesen Java Basics - Anfänger-Themen 8
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
E Einteilung der Räume mit einlesen einer .txt datei Java Basics - Anfänger-Themen 16
P Array einlesen von Konsole Java Basics - Anfänger-Themen 8
D Eingaben in String Array einlesen Java Basics - Anfänger-Themen 12
B CSV einlesen - Parameter a) encoding b) delimiter Java Basics - Anfänger-Themen 7
R Compiler-Fehler Einlesen von Konsolenparameter funtioniert nichtmehr Java Basics - Anfänger-Themen 4
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
H Einlesen Java Basics - Anfänger-Themen 8
H Einlesen von Zahlen Java Basics - Anfänger-Themen 20
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
R txt Einlesen und Verarbeiten Java Basics - Anfänger-Themen 15
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
K Sonderzeichen einlesen Java Basics - Anfänger-Themen 3
L Input/Output XML Datei einlesen (JAXB?) Java Basics - Anfänger-Themen 10
F Zahlen aus Datei einlesen und in Array speichern Java Basics - Anfänger-Themen 2
I Datei einlesen Java Basics - Anfänger-Themen 11
J Best Practice [Code Verbesserung] TXT einlesen und in Arrayliste speichern Java Basics - Anfänger-Themen 5
A Ungeordnetes Array ordnen, Zahl einlesen und einordnen Java Basics - Anfänger-Themen 23
R Erste Schritte Sicheres einlesen eines Strings Java Basics - Anfänger-Themen 2
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
C Erste Schritte Regex - Datei einlesen und splitten Java Basics - Anfänger-Themen 4
T Input/Output Einlesen eines .txt Files nur bei gesetztem Breakpoint möglich Java Basics - Anfänger-Themen 1
L RSA Public Key einlesen Java Basics - Anfänger-Themen 0
K Datei aus unbekannten Speicherorten einlesen Java Basics - Anfänger-Themen 1
T Datei in Array einlesen "null" Java Basics - Anfänger-Themen 8
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
N Datei Zeilenweise einlesen, Ausgabe mehrere Arrays Java Basics - Anfänger-Themen 7
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
M Einlesen von Integerwertern aus einer CSV Java Basics - Anfänger-Themen 8
? Methoden Boolean Wert vergleichen und einlesen Java Basics - Anfänger-Themen 1
K String einlesen und als Variable speichern Java Basics - Anfänger-Themen 8
K .txt einlesen und in ein Array packen Java Basics - Anfänger-Themen 2
M Erste Schritte Zahlen einlesen und auswerten Java Basics - Anfänger-Themen 6
N Best Practice CSV einlesen - Variables Array?! Java Basics - Anfänger-Themen 8
O Klassen Objektnamen für Methodenaufrauf einlesen lassen Java Basics - Anfänger-Themen 2
D Array Werte einlesen und ausgeben? Java Basics - Anfänger-Themen 8
C Java Scanner einlesen von txt Dokument InputMismatch Java Basics - Anfänger-Themen 9
V Hilfe zum Thema einlesen eines Datums Java Basics - Anfänger-Themen 5
E Erste Schritte txt.Datei mit BufferedReader einlesen und in 2D-Array abspeichern Java Basics - Anfänger-Themen 15
S Werte in Array einlesen Java Basics - Anfänger-Themen 2
A Textdatei mit BufferedReader einlesen Java Basics - Anfänger-Themen 0
P Einlesen von Daten via BufferedReader Java Basics - Anfänger-Themen 4
J Zahlen aus Konsole einlesen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben