fehlende Ausgabe

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi Leude,

ich übe gerade ein wenig Java für eine Klausur.

folgende Problemstellung:
- die eingabe an das prog wird zeichenweise von der standardeingabe gelesen
- das prog prüft für jede eingabezeile, ob die klammerung in dieser zeile korrekt ist (das heist gleiche anzahl öffneender und schliessender klammern)
- wenn keine korrekte klammerung gegeben ist, wird die zeilennr ausgegeben!
Code:
public class aufgabe1 {
	public static void main (String args[]) throws java.io.IOException {
		
		int einlesen = System.in.read();
		int oeffnende = 0;
		int schliessende = 0;
		int zeilennr = 0;
		
		while(einlesen != -1)
		{
			zeilennr++;
			
			if (einlesen == '(')
			{
				oeffnende++;
			}
			
			
			if (einlesen == ')')
			{
				schliessende++;
			}
			
			
			if (einlesen == '\n' && oeffnende != schliessende)
			{
				System.out.println(zeilennr);
			}
		}
	}
}
für mich als jemanden der keine ahnung hat, sieht es garnicht mal so schleht aus, es ist aber fehlerhaft. ich bin mir auch nicht sicher ob man die klammer mit '(' identifiziert oder ob da noch ein \ oder so davor muss. Auch die Ausgabe ist fehlerhaft.

bin für hilfe sehr dankbar, denn sowas ähnliches kommt best. in der klausur dran, muss es also können

gruss
wurstel
 
S

SlaterB

Gast
> ich bin mir auch nicht sicher ob
nein

> Auch die Ausgabe ist fehlerhaft

und du willst das nicht näher erläutern? Compilerfehler, Exception, Fehlverhalten bei Eingabe X?
->
deine Fehlerbeschreibung ist fehlerhaft ;)

-------

du erhöhst die zeilennummer anscheindend bei jedem Zeichen?

--------

du bekommst eine Endlosschleife, du liest einmal ein Zeichen an und das wird dann nie -1
 

Murray

Top Contributor
Man könnte z.B. über folgende Fragen nachdenken:
1. Wie oft wird denn hier ein Zeichen von der Standardeingabe gelesen?
2. Unter welchen Umständen liefert System.in.read() -1 zurück?
3. Wird die Schleife jemals terminieren?
4. Wann sollte man Zeilennummer hochzählen?
 
G

Gast2

Gast
also für mich sieht es wie ein endlosschleife aus

EDIT: zu spät gepostet Murray hat alles gesagt
 

wurstel

Mitglied
hi,

der Compiler meckert garnicht, die Syntax an sich ist also richtig, nur nicht die Semantik!

habe den Code ein wenig geändert, und hoffe das ich jetz zum richtigen zeitpunkt die zeilennr erhöhe.
wie identifiziere ich dann jetzt eig. eine ( richitg?



ich kann mein prog nur mit der tastenkombination strg + c beenden! wieso?
wie müsste der code richtig aussehen?
Code:
public class aufgabe1 {
	public static void main (String args[]) throws java.io.IOException {
		
		int einlesen = System.in.read();
		int oeffnende = 0;
		int schliessende = 0;
		int zeilennr = 0;
		
		while(einlesen != -1)
		{				
			if (einlesen == '(')
			{
				oeffnende++;
			}
			
			
			if (einlesen == ')')
			{
				schliessende++;
			}
			
			
			if (einlesen == '\n')
				zeilennr++;
			
			
			if (einlesen == '\n' && oeffnende != schliessende)
			{
				System.out.println(zeilennr);
			}
		}
	}
}
 
G

Gast2

Gast
weil du immer noch eine endloschleife hast debugge mal dann siehst du dass dein enlesen sich nie ändert und immer den gleichen wert hat --> es wird nie -1
 

wurstel

Mitglied
Leute, ich bedanke mich ja für eure hilfe, aber ich bin absolut kein programmierer! ihr müsstet mir schon etwas detailierter helfen, denn ich hab wirklich 0 ahnung davon...
 
G

Gast2

Gast
ja wenn du nicht dazu lernen willst ist des schlecht, mach mal ein System.out.println(einlesen) in deiner schleife und schau dir die zahl mal an

EDIT: und erklär mal was du mit deinem letzen if bezwecken willst
 

wurstel

Mitglied
Ja gut, habt ja recht. ich krieg dann als ausgabe ne 40 was dem dezimalwert von ( entspricht, und das gnaze ist ne endlos schleife!
 
G

Gast2

Gast
Code:
einlesen = System.in.read();

bau das am ender deiner schleife ein

EDIT: und wenn du nur in der jeder zeile prüfen willst, also nicht zeilenübergreifend solltest du deine offend schliessend auch wieder zurück setzen....
 

jPat

Bekanntes Mitglied
EIne Kleine Hilfe:

Code:
 BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	    char[] zeile = in.readLine().toCharArray();
	    for (int i = 0; i < zeile.length; i++ ){
	    	// hier kommt deine Überprüferei rein
	    	if (zeile[i]=='(') // Hier kannste was machen!  	
	    }

is nicht getestet!
 
G

Guest

Gast
Hi Leude,

ich weiß ich nerve euch, da ich ein so einfaches Prog. nicht alleine hinkriege. Trotzdem frag ich nochmal nach. Also ich habe es fast fertig. Das einzige was mir noch nicht passt ist folgendes:
wenn ich jetzt eine Zeile eingebe die ungleiche Mengen an Klammern erhält und danach enter drücke wird direkt in der nächsten Zeile die Zeilennr mit der ungleichen Klammernmenge angegeben.

Bsp:
()
(()
2
()
(())
und so weiter...

es ist aber so gewollt das die 2 und alle Zeilennr mit ungleichen KLammernmengen erst ganz am Ende nach Beendigung des Progs ausgegeben werden, also so:

()
(()
()
(())
()))
<--prog ende -->
2
5



Code:
public class aufgabe1 {
	public static void main (String args[]) throws java.io.IOException {
		
		int einlesen = System.in.read();
		int oeffnende = 0;
		int schliessende = 0;
		int zeilennr = 0;

		while(einlesen != -1)
		{				
			if ((char)einlesen == '(')
			{
				oeffnende++;
			}
			
			
			if ((char)einlesen == ')')
			{
				schliessende++;
			}
			
			if (einlesen == '\n') {
				zeilennr++;
				if (oeffnende != schliessende) {
					System.out.println(zeilennr);
				}
				oeffnende = 0;
				schliessende = 0;
			}
								
		einlesen = System.in.read();
		}			
	}
}

Was muss ich am Code ändern? und denkt daran das ich nicht unbedingt eure Profi Hinweise verstehe, weil ich absolut kein Programmierer bin ;-)

thx wurstel
 
S

SlaterB

Gast
du musst die Ausgabe nicht sofort ausgeben sondern irgendwo ablegen, z.B. in einem String,

ganz am Ende, falls es jemals dazu kommt, was bei -1 ja bereits als fraglich angesprochen wurde,
ganz am Ende also den String dann ausgeben

mit Strg C wird das allerdings kaum funktionieren, dann beendest du das Programm von außen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kirby.exe Fehlende Int Werte aus Array mit streams finden Java Basics - Anfänger-Themen 19
N Fehlende .class Datei Java Basics - Anfänger-Themen 4
NightmareVirus Java-Editor (G. Röhner): Fehlende Dateinamen Java Basics - Anfänger-Themen 1
B fehlende return anweisung? Java Basics - Anfänger-Themen 17
A Fehlende Main-Methode? Java Basics - Anfänger-Themen 12
S Fehlende Klammer '(' Java Basics - Anfänger-Themen 2
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
M Ausgabe beim Overloading Java Basics - Anfänger-Themen 3
H Frage zur Ausgabe Java Basics - Anfänger-Themen 4
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
B Binärzahlen auflisten, falsche Ausgabe? Java Basics - Anfänger-Themen 1
M Java Ausgabe der höchsten Zahl Java Basics - Anfänger-Themen 14
M Erste Schritte While Schleife / Ausgabe von buchstabe & ASCII Wert Java Basics - Anfänger-Themen 4
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
W Streams in Java und was bedeutet meine Konsolen-Ausgabe? Java Basics - Anfänger-Themen 4
B Automatisierte Ausgabe (Schleife, If-Abfrage?) Java Basics - Anfänger-Themen 24
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
B Deadlock verstehen der Ausgabe! Java Basics - Anfänger-Themen 12
Lion.King Ausgabe mit Eigenschaften Java Basics - Anfänger-Themen 4
D Java Pattern mit X Ausgabe Stern Java Basics - Anfänger-Themen 4
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
Xaver code Tastatur ausgabe Java Basics - Anfänger-Themen 4
R Anfänger: Ausgabe kommt minus raus? Java Basics - Anfänger-Themen 6
K Leerzeile in Konsolen-Ausgabe Java Basics - Anfänger-Themen 4
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
Q return Ausgabe Java Basics - Anfänger-Themen 4
C Java Arrays - Ausgabe in Methode Java Basics - Anfänger-Themen 12
D Best Practice Ausgabe über direkte Ausgabe oder try-catch? Java Basics - Anfänger-Themen 13
S Ausgabe des Variablenwerts Java Basics - Anfänger-Themen 10
I Ausgabe nicht nur senkrecht sondern auch waagerecht. Java Basics - Anfänger-Themen 2
paulen1 Methoden Unerwünschte Ausgabe bei System.out.print in For-Schleife Java Basics - Anfänger-Themen 8
C Ausgabe boolean return ((n==9)||(n==0)); Java Basics - Anfänger-Themen 13
F Double Ausgabe nicht wissenschaftlich Java Basics - Anfänger-Themen 16
danieldemetry Java - Graph Komponenten - Ausgabe Java Basics - Anfänger-Themen 0
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
D BigDecimal Ausgabe sehr lang. Java Basics - Anfänger-Themen 2
J String Ausgabe Java Basics - Anfänger-Themen 2
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
KogoroMori21 Array-Ausgabe Java Basics - Anfänger-Themen 6
JaVaN0oB Wörterraten - Falsche Ausgabe, String/Chars vergleichen Java Basics - Anfänger-Themen 2
E Ausgabe überschreiben Java Basics - Anfänger-Themen 15
D Ausgabe von Array Java Basics - Anfänger-Themen 2
U Ausgabe Java Basics - Anfänger-Themen 4
J Buchstabenhäufigkeit mit Array und Ausgabe des häufigsten Buchstaben Java Basics - Anfänger-Themen 25
V Multiplikationstafel - Ausgabe Java Basics - Anfänger-Themen 4
L Warum ist die Ausgabe anders als das was im Bezeichner steht? Java Basics - Anfänger-Themen 4
M In gleicher zeile hinter ausgabe noch etwas ausgeben Java Basics - Anfänger-Themen 1
newcomerJava Nach doppelter Zahl eine Ausgabe Java Basics - Anfänger-Themen 10
H Falsche Ausgabe Java Basics - Anfänger-Themen 2
P Klassenübergreifende Ausgabe mittels "getter" nicht möglich Java Basics - Anfänger-Themen 21
R Call-by-Value, Call-by-Reference, Call-by-Name Ausgabe Java Basics - Anfänger-Themen 1
JavaClap "Bruchrechner" liefert Fehler/keine Ausgabe bei Addition und Subtraktion Java Basics - Anfänger-Themen 0
D Warum erfolgt folgende Ausgabe und warum? Java Basics - Anfänger-Themen 4
C Ausgabe in der Konsole Java Basics - Anfänger-Themen 11
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
C Konvertierung des int typs in den double typ für die Ausgabe mit Nachkommastellen Java Basics - Anfänger-Themen 4
A Ausgabe mit boolean Java Basics - Anfänger-Themen 3
K Probleme bei der Ausgabe - komme nicht weiter :/ Java Basics - Anfänger-Themen 15
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
Y Methode + Parameters + Ein und Ausgabe Java Basics - Anfänger-Themen 1
K Methodenaufruf /-ausgabe Java Basics - Anfänger-Themen 5
A Wiederholte Ausgabe vermeiden Java Basics - Anfänger-Themen 16
B Collections Objektreferenz-ID in der Ausgabe (Comparator Interface) Java Basics - Anfänger-Themen 2
M Wie analysiert JSON eine toString-Ausgabe ? Java Basics - Anfänger-Themen 1
T Vererbung Verschiedene Fahrzeugtypen mit unterschiedlicher Ausgabe Java Basics - Anfänger-Themen 17
T Ausgabe einer for Schleife Java Basics - Anfänger-Themen 2
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
T Text-Ausgabe für Textadventure - Organisation Java Basics - Anfänger-Themen 5
G Unterklassen (Klasse für Ausgabe) Java Basics - Anfänger-Themen 4
N Eingabe des Users direkt hinter die Ausgabe Java Basics - Anfänger-Themen 3
J Methode zur Ausgabe eines Dreiecks aus Sternen schreiben? Java Basics - Anfänger-Themen 2
ZH1896ZH Wieso diese Ausgabe?? Java Basics - Anfänger-Themen 10
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
B Keine Ausgabe .. Woran liegt das? Ich komme nicht weiter Java Basics - Anfänger-Themen 14
K Rechtsbündige Ausgabe von Zahlen Java Basics - Anfänger-Themen 6
V Erste Schritte for-Schleife; Ausgabe soll alle 5 Sekunden erfolgen. Java Basics - Anfänger-Themen 4
X Threads Zwei Threads, aber doppelte Ausgabe verhindern (synchronized) Java Basics - Anfänger-Themen 54
J Ausgabe Gesamtpreis Java Basics - Anfänger-Themen 39
E Variablen in formatierter Ausgabe Java Basics - Anfänger-Themen 15
B HQL / Hibernate, GroupBy und Ausgabe als Double Java Basics - Anfänger-Themen 1
J StrinBuffer in der Ausgabe Java Basics - Anfänger-Themen 4
H ausgabe? Java Basics - Anfänger-Themen 32
B Ausgabe Zahlenreihe Horizontal Java Basics - Anfänger-Themen 3
V Neue Ausgabe von toString nach Methodenaufruf Java Basics - Anfänger-Themen 9
N Wochentagberechner Ausgabe funktioniert nicht Java Basics - Anfänger-Themen 7
K Array Ausgabe Java Basics - Anfänger-Themen 2
L Datentypen Ausgabe von eigenem Datentypen Java Basics - Anfänger-Themen 2
C 1x1 Ausgabe auf dem Bildschirm Java Basics - Anfänger-Themen 3
L Fehler im Programm bei Ausgabe Java Basics - Anfänger-Themen 21
J Doppelte Ausgabe erzeugen Iterator Java Basics - Anfänger-Themen 6
F Warum ist die Ausgabe hier 1? Java Basics - Anfänger-Themen 4
Bun17 Keine Ausgabe in der Konsole Java Basics - Anfänger-Themen 2
H Ausgabe Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben