break und Sprungmarken



  • Java Insel schrieb:

    import java.util.Scanner;
    
    public class UserInputInStringArray
    {
      public static void main( String[] args )
      {
        String[] validInputs = { "Banane", "Apfel", "Kirsche" };
    
        userInputLoop:
        while ( true )
        {
          String input = new Scanner( System.in ).nextLine();
    
          for ( String s : validInputs )
            if ( s.equals( input ) )
              break userInputLoop;
        }
    
        System.out.println( "Gültiges Früchtchen eingegeben" );
      }
    }
    

    Wie kommt es, dass wenn man z.B. Banane eingibt, trotzdem "Gültiges Früchtchen eingegeben" ausgegeben wird? Ich sehe break userInputLoop irgendwie wie das goto von C. Und wenn man wieder vor die Endlosschleife springt, sollte die Endlosschleife doch erneut ausgeführt werden!? Warum ist das hier nicht der Fall?



  • schreiberkugel schrieb:

    Wie kommt es, dass wenn man z.B. Banane eingibt, trotzdem "Gültiges Früchtchen eingegeben" ausgegeben wird? Ich sehe break userInputLoop irgendwie wie das goto von C.

    Es ist halt kein goto. Das Label geht nur an Loops und mit dem labeled break unterbricht man gezielt den Loop mit dem angegebenen Label.



  • Achso, krass.
    D.h. ein alleinstehendes break gibt es in Java nicht?



  • Mmh? Doch, das geht halt ganz normal nur aus der innersten Schleife.



  • Ah, kk.
    Danke.


Anmelden zum Antworten