Stefan M.: Benutzereingabe lesen bei Applikationen???

Hallo!
Ich bin noch relativ unerfahren in Java und versuche im Moment verzweifelt, eine Benutzereingabe zu verwirklichen. Ich habe schon überall rumgesucht und alles mögliche ausprobiert, aber es will einfach nicht so wie ich es will.
Das Programm ist eine einfache Applikation, und es soll den User auffordern, eine Zahl einzugeben, die dann als int-Wert vom Programm weiter benutzt werden kann. Allerdings bekomme ich nicht die vom User eingebene Zahl, sondern nur derren Code. :o(
Gibt es keinen einfachen Weg, sowas doch relativ simples einfach zu verwirklichen?

Stefan

-------

import java.io.*;

public class Test{
   public static void main (String args[]){
      byte[] buffer = new byte[10];
      try{
         System.out.println("Geben Sie die Anzahl ein");
         System.out.print("Anzahl: ");
         int x = System.in.read(buffer);
      }
      catch ( IOException e ){
         System.out.println("error");
      }
   }
}

  1. Hallo Stefan,

    -----------------Java---API----Docu---------------------------
    public int read(byte b[]) throws IOException

    Reads up to b.length bytes of data from this input stream into an array of bytes.
    The read method of InputStream calls the read method of three arguments with the arguments b, 0, and b.length.

    Parameters:
    b - the buffer into which the data is read.
    Returns:
    the total number of bytes read into the buffer, or -1 is there is no more data because the end of the stream has been reached.
    Throws: IOException
    if an I/O error occurs.
    See Also:
    read
    -----------------Java---API----Docu---------------------------

    Wie du siehst steht die Eingabe in buffer und der Rückgabewert der Funktion ist die Länge der Eingabe.

    du hast z.B.      byte[] buff = new byte[100];
                      int len = System.in.read(buff);
                      string eingabe = new String(buff,0,0,len);
                      System.out.println(eingabe);

    Wie du den buff in einen Int bekommst weiß ich jetzt nicht, musst du selbst mal schauen.

    ALEX

    1. Vielen Dank für die Hilfe. Weis jetzt zumindest, wieso es nicht so richtig klappt.
      Leider bekomme ich es immer noch nicht zum Laufen und wüsste es nur zu gern. :o(
      Gibt es denn kein Beispiel wo so etwas vorkommt?

      Stefan

      Hallo Stefan,

      -----------------Java---API----Docu---------------------------
      public int read(byte b[]) throws IOException

      Reads up to b.length bytes of data from this input stream into an array of bytes.
      The read method of InputStream calls the read method of three arguments with the arguments b, 0, and b.length.

      Parameters:
      b - the buffer into which the data is read.
      Returns:
      the total number of bytes read into the buffer, or -1 is there is no more data because the end of the stream has been reached.
      Throws: IOException
      if an I/O error occurs.
      See Also:
      read
      -----------------Java---API----Docu---------------------------

      Wie du siehst steht die Eingabe in buffer und der Rückgabewert der Funktion ist die Länge der Eingabe.

      du hast z.B.      byte[] buff = new byte[100];
                        int len = System.in.read(buff);
                        string eingabe = new String(buff,0,0,len);
                        System.out.println(eingabe);

      Wie du den buff in einen Int bekommst weiß ich jetzt nicht, musst du selbst mal schauen.

      ALEX

      1. Hallo Stefan

        In x wird ja die Anzahl der gelesenen bytes gespeichert
        (das sind bei di maximal 10 eine Lösung mit while ist für lange eingaben wichtig)
        In buffer die bytes.
        Mit copyValueOf wandle ich buffer nun in einen String um.
        Mit parseInt mache ich aus diesem ein int.

        int x = System.in.read(buffer);
        int value = Integer.parseInt(String.copyValueOf(buffer, 0,x));

        Tschüs

        Daniel

        1. Vielen Dank für die Antwort. Die Tipps waren sehr nützlich und es läuft jetzt endlich so, wie es sein soll.
          :o)

          Stefan

          Hallo Stefan

          In x wird ja die Anzahl der gelesenen bytes gespeichert
          (das sind bei di maximal 10 eine Lösung mit while ist für lange eingaben wichtig)
          In buffer die bytes.
          Mit copyValueOf wandle ich buffer nun in einen String um.
          Mit parseInt mache ich aus diesem ein int.

          int x = System.in.read(buffer);
          int value = Integer.parseInt(String.copyValueOf(buffer, 0,x));

          Tschüs

          Daniel