• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Java - InputStreamReader...

Tengu

Apfel der Erkenntnis
Registriert
05.02.07
Beiträge
721
Hi allerseits!

Ich habe mal eine Frage. Undzwar ich habe grad überlegt, dass Java das Einlesen von Eingaben auf der Kommandozeile megakompliziert handelt.

Beispiel:

Code:
import java.io.InputStreamReader;

public class Inverter {

public static void main(String[] args)throws

java.io.IOException {
InputStreamReader reader = new InputStreamReader(System.in);
char[] puffer = new char[20];
char zeichen;
System.out.println("Bitte geben Sie eine Zeichenfolge ein und bestätigen Sie mit <Enter>: ");
zeichen = (char)reader.read(); // erstes Zeichen Lesen
int index=0;
while (zeichen!='\n' && index<=19) {// weiterlesen bis <Enter>
puffer[index]=zeichen; // oder Puffer voll

zeichen=(char)reader.read();
index++;
}

System.out.println("Inverse Zeichenfolge:");
for (int i=index-1;i>=0;i--) {
System.out.print(puffer[i]);
}

System.out.println(); //Zeilenumbruch
}

}

Meine Frage... geht das auch einfacher. Eigentlich würde ich gerne unbegrenzt lange Eingaben zulassen, die in einzelne Zahlen umwandeln, im Array Feld sortieren, und sortiert ausgeben.
Aber ist das wirklich so extrem komplex mit dem Einlesen? Muss ich das so machen...?

Java ist böse :(,
gruß,
Mark
 
hi,

wenn es nicht unbedingt die kommandozeile sein muss, ist denke ich dies hier die schnellste moeglichkeit ueberhaupt mal daten einzulesen:

Code:
String temp = JOptionPane.showInputDialog("Input:");
System.out.println(temp);
gruesse
 
Ne, das muss die Kommandozeile sein... ;)
 
Wir wäre es einen BufferedReader zu nutzen und davon die Methode readLine() einzusetzen? Diese liefert einen String, den du nur noch invers ausgeben musst.
 
hier mal was ganz kurzes:

Code:
// java.util.Scanner
Scanner in = new Scanner(System.in);
StringBuffer buffer = new StringBuffer();
System.out.println("Input: ");
buffer.append(in.next());
System.out.println(buffer.reverse());
leider geht das nur bis zum ersten leerzeichen.
 
trapper hat recht ... am besten gehts mit dem BufferedReader:

Code:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuffer input = new StringBuffer();
System.out.println("Input: ");
input.append(br.readLine());
br.close();
System.out.println(input.reverse());
 
Mir gefällt am besten die Methode per Scanner. Hat den Vorteil, dass man keinen StringBuffer braucht, sondern gleich direkt mit Strings arbeiten kann.

Code:
import java.util.*;
(...)
Scanner in = new Scanner(System.in);
String eingabe = in.nextLine().trim();
(...)
in.close();
(...)

trim() braucht's nur, wenn man überflüssige Leerzeichen entfernen lassen will. Und in.close() macht das Ganze sauberer. ;)