Announcement

Collapse
No announcement yet.

Problem beim Verständnis von Programmcode

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem beim Verständnis von Programmcode

    Hallo,

    ich habe Fragen zu folgendem Code:

    while(true){
    try{
    byte[] bytes_read = new byte[100];
    int bytes=System.in.read(bytes_read);
    String s= new String(bytes_read,0,bytes);
    i=Integer.parseInt(s.trim());
    break;
    }
    1. ich habe mit System.int.read rumgespielt und bemerkt, dass die Anzahl der Zeichen + 2 zurückgegeben wird. Warum 2 ?

    2. Warum wird dem Konstruktor von String ausser dem byte-array noch die 0 und die Anzahl der eingegebenen Zeichen+2 übergeben?

    3. was genau macht "Integer.parseInt(s.trim())" ?

    Danke im Voraus für eure Hilfe
    Gruß
    Kristian

  • #2
    3. http://java.sun.com/javase/6/docs/ap...g/Integer.html

    2. http://java.sun.com/javase/6/docs/ap...ng/String.html

    1. Enter gedrückt?
    Christian

    Comment


    • #3
      Ok, danke. Das habe ich soweit verstanden. Was ich noch nicht verstanden habe, ist der Mechanismus der try catch Anweisungen. Nach meinem Verständnis wird beim ersten Durchlaufen der Schleife die break-Anweisung erreicht und die while Schleife ist beendet. Die ist aber nicht der Fall, solange keine eindeutige Zahl eingegeben wurde, warum? Dass es etwas mit der try/catch Anweisung zu tun haben mussst mir klar, nur was genau passiert da?

      Hier ist nochmal der gesamte code

      Code:
      public class Input{
         static int readInt(){       //Anfang der Methode
           System.out.println
                        ("Geben Sie eine ganze Zahl ein");
           int i=0;
           while(true){
             try{
               byte[] bytes_read = new byte[100];
               int bytes=System.in.read(bytes_read); 
               String s= new String(bytes_read,0,bytes);
               i=Integer.parseInt(s.trim());
                break;
             }
             catch(NumberFormatException ex){
                 System.out.println("Falsche Eingabe!
                    Geben Sie eine korrekte Zahl ein!");
             }
             catch(Exception ex){}
           }
           return i; 
          }                      //Ende der Methode readInt
         } 
      }
      Zuletzt editiert von xkris; 20.11.2009, 18:12.

      Comment


      • #4
        Der Code ist nicht gut

        Er basiert darauf, dass eine Zahl eingegeben wird. Ist das der Fall wird die Schleife mit break beendet. Ist das nicht der Fall, wird die Exception ausgelöst.So sollte man nicht programmieren...
        Christian

        Comment


        • #5
          Originally posted by Christian Marquardt View Post
          Der Code ist nicht gut

          Ist von meinem Prof ich sag ihm das mal

          Wenn eine Ausnahme auftritt wird sofort der try-Block verlassen und die entsprechende catch-Anweisung aufgeführt?

          Comment


          • #6
            ja, so ist es
            Christian

            Comment


            • #7
              Hallo,

              Originally posted by xkris View Post
              Ist von meinem Prof ich sag ihm das mal

              Wenn eine Ausnahme auftritt wird sofort der try-Block verlassen und die entsprechende catch-Anweisung aufgeführt?
              Ja genau so ist es. Die Exception wird sofort geworfen und dann vom catch-Block gefangen oder halt auch nicht, wenn es keinen passenden gibt.

              [EDIT]
              Hmm ich war zu langsam
              "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland)

              Viele Grüße Novi

              Comment

              Working...
              X