• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

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
 

Mighty-M@ck

Jonagold
Registriert
02.03.06
Beiträge
20
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
 

Tengu

Apfel der Erkenntnis
Registriert
05.02.07
Beiträge
721
Ne, das muss die Kommandozeile sein... ;)
 

Trapper

Meraner
Registriert
12.05.05
Beiträge
231
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.
 

Mighty-M@ck

Jonagold
Registriert
02.03.06
Beiträge
20
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.
 

Mighty-M@ck

Jonagold
Registriert
02.03.06
Beiträge
20
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());
 

Mitglied 7974

Gast
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. ;)