IOException

Attira

Mitglied
Ziel des Programms ist es, mehrere Eingaben, zb > java Test HG JK KL< so wieder auszugeben:
HG
JK
KL
numCases ist dabei die Anzahl der Teilelemente HG, JK und KL (denk ich zumindest, das Programm ist so vorgegeben).

Kann mir bitte jemand sagen, warum sich dieser Programmfetzen zwar problemlos kompilieren lässt, aber beim Ausführen dann gar nichts macht? Das kommt nicht mal bis zur forschleife, wie einige Tests beweisen, also kann ich eine endlosschleife ausschließen. Ich denke es liegt an dem IOException dingens...fehlt da was?
BZW kann mir jemand erklären, wie das hier im einzelnen funktionieren soll?



Java:
import java.io.*;
import java.util.*;

class Test {
	public static int freq[] = new int[128];
	public static void main(String args[]) throws IOException {
		BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
		String line = r.readLine();

		int numCases = Integer.parseInt(line);

		for (int c = 0; c < numCases; c++) {
			line = r.readLine();
			System.out.println(line);
		}
	}
}
 
Zuletzt bearbeitet:
Mit System.in liest du aus der Konsole. Deine Argumente stehen in args.

Soweit verstehe ich es schon noch^^
Ich weiß was args[] darstellt und System.in ist ziemlich selbsterklärend. Mein Problem ist, wie gesagt, dass beim ausführen mit java Test, egal ob danach Argumente folgen oder nicht, einfach gar nichts passiert. Das Programm läuft, eindeutig, aber es macht nichts und beendet sich auch nicht von selbst. Ich kann es nur mit STRG+c beenden.
 
Ah, ok, danke, das erklärt einiges.
Ich krieg jetzt aber zb für die Eingabe RD so eine bescheuerte Fehlermeldung:

Exception in thread "main" java.lang.NumberFormatException: For input string: "RD"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at Test.main(Test.java:10)

Wofür genau steht die Variable numCases?
 
:shock:

Integer.parseInt wandelt einen String zu einer Zahl um.
"RD" in eine Zahl umzuwandeln dürfte wohl den meisten schwer fallen. 🙂
 
:shock:

Integer.parseInt wandelt einen String zu einer Zahl um.
"RD" in eine Zahl umzuwandeln dürfte wohl den meisten schwer fallen. 🙂

Mhh, ich kenne den Befehl an sich schon...und irgendwie hast du schon recht, aber das ist Teil der Aufgabenstellung...
Irgendwie muss es doch Sinn geben in diesem zusammenhang...
Wenn ich die Länge einsetze dann gehts, aber irgendwie schluckt er dann meinen ersten eintrag:

java Test
LD RD
HD LD
HD LD
RM LD
RM LD
LD FL
LD FL
 
Das Programm weiß ja nicht, wie viele Parameter du eingeben willst. Entweder du liest so lange, bis bis ein gewissen Zeichen (z. B. leerer String) kommt oder du liest eine gewisse Menge (die du eventuell selbst eintippst.)
Und entweder du liest erst alles ein und speicherst es in einer Liste oder Array (je nach dem, ob du die Länge bereits kennst), oder du liest und schreibst das gelesene sofort wieder.

Aber das willst du ja alles garnicht. Du willst es ja per Arguments übergeben. In dem Fall stehen sie ja bereits mit Länge im Array.

Java:
public static void main(String args[]) {
	for(String s:args) {
		System.out.println(s);
	}
}
 
Naja, ich will eigentlich, dass man mehrere Zeilen eintippen kann, also lines (deswegen auch der Integerwert, es geht um die Zeilenanzahl) und dann hinterher will ich es so wieder ausgeben, also zB

Input:

ZB
QRST
LB

Output

ZB
QRST
LB
 
Dann musst du auch als erstes die Zahl eintippen. ^^
Wenn du keine Zahl eintippst (wie in deinen Beispiel "RD") gibt es natürlich einen Fehler.
 

Zurück
Oben