1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Java - InputStreamReader...

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Tengu, 30.03.07.

  1. Tengu

    Tengu Apfel der Erkenntnis

    Dabei seit:
    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
     
  2. Mighty-M@ck

    Mighty-M@ck Jonagold

    Dabei seit:
    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
     
  3. Tengu

    Tengu Apfel der Erkenntnis

    Dabei seit:
    05.02.07
    Beiträge:
    721
    Ne, das muss die Kommandozeile sein... ;)
     
  4. Trapper

    Trapper Boskop

    Dabei seit:
    12.05.05
    Beiträge:
    213
    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.
     
  5. Mighty-M@ck

    Mighty-M@ck Jonagold

    Dabei seit:
    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.
     
  6. Mighty-M@ck

    Mighty-M@ck Jonagold

    Dabei seit:
    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());
     
  7. snoopysalive

    snoopysalive Allington Pepping

    Dabei seit:
    19.08.05
    Beiträge:
    195
    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. ;)
     

Diese Seite empfehlen