import utilities.TastaturEingabe;

/**
Im Beispiel werden die markierten Verzweigungen demonstriert,<BR>
Es wird die Summe von Produkten berechnet. Die Faktoren werden eingelesen;
bei der Eingabe von 0 oder einem Wert kleiner -3 wird das Produkt
aufaddiert und ein neues Produkt berechnet. Bei der Eingabe eines
Zahlenwertes zwischen -1 und -3 wird das Ergebnis ausgegeben, und
zwar bei -1 als int-Wert, bei -2 als long-Wert und bei -3 als
float-Wert.
<br>
Das Programm liefert etwa folgenden Dialog:
<hr size=5 width="100%">
<blockquote>
<pre>
Summe von Produkten berechnen

0: naechstes Prod,>0: mult.
<0: Ende: -1:int, -2:long, -3:float
Gib Faktor ein: 12
0: naechstes Prod,>0: mult.
<0: Ende: -1:int, -2:long, -3:float
Gib Faktor ein: 13
0: naechstes Prod,>0: mult.
<0: Ende: -1:int, -2:long, -3:float
Gib Faktor ein: 0
Zwischensumme = 156
0: naechstes Prod,>0: mult.
<0: Ende: -1:int, -2:long, -3:float
Gib Faktor ein: 321
0: naechstes Prod,>0: mult.
<0: Ende: -1:int, -2:long, -3:float
Gib Faktor ein: 234
0: naechstes Prod,>0: mult.
<0: Ende: -1:int, -2:long, -3:float
Gib Faktor ein: -3
Zwischensumme = 75270
float-Summe = 75270.0
Ende von main

</pre>
</blockquote>
<hr size=5 width="100%">
*/
/*-----------------------------------------------------------------------*/

public class StrukturierterSprung
{  public static void main(String[] argv)
   {  long summe=0, produkt=1, zahl=0;
      int intErgebnis;
      float floatErgebnis;
      System.out.println(
            "Summe von Produkten berechnen\n");
Summe:for (int i=0;i<10;i++)  // <<------------------+
/****/                                            // |
  {                                               // |
Konvert:                                          // |
/******///                                        // |
  for (;;) // Endlosschleife <<---------------------++
/******/                                      //    ||
    switch ((int)zahl)                        //    ||
    {  case -1: // int                              ||
          intErgebnis=(int)summe;             //    ||
          System.out.println(                 //    ||
                "int-Summe = "+intErgebnis);  //    ||
          break Summe;   // ---------------------+  ||
       case -2: // long                       // |  ||
           System.out.println(                // |  ||
                 "long-Summe = "+summe);      // V  ||
           break Summe;   // ------------------->+  ||
       case -3: // float                      // |  ||
           floatErgebnis=(float)summe;        // |  ||
           System.out.println(                // |  ||
             "float-Summe = "+floatErgebnis); // V  ||
           break Summe;   // ------------------->+  ||
       default: // Produkt-Schleife           // |  ||
           produkt=1;                         // |  ||
           for (int p=0;p<10;p++)// max. 10   // |  ||
           {  System.out.println(             // |  ||
               "0: naechstes Prod,>0: mult.");// |  ||
              System.out.print("<0: Ende: "); // |  ||
              System.out.println(             // |  ||
               "-1:int, -2:long, -3:float");  // |  ||
              System.out.print(               // |  ||
               "Gib Faktor ein: ");           // |  ||
              System.out.flush();             // |  ||
              zahl =                          // |  ||
                TastaturEingabe.readLong(""); // |  ||
              if (zahl<=0)                    // |  ||
                 break;   // ----------------+   |  ||
              produkt*=zahl;              // |   |  ||
           }  // Ende for-p-Schleife  <------+   |  ||
           summe+=produkt;                //     |  ||
           System.out.println(            //     |  ||
            "Zwischensumme = "+summe);    //     |  ||
           if ((zahl==0)|(zahl<=3))       //     |  ||
              continue Summe; // ----------------|->+|
           if (zahl<0)                    //     |   |
              continue Konvert; // --------------|-->+
    }  // Ende switch,for(;;)(Konvert)           |
 }  // Ende int-i-Schleife (Summe)               |
 //  <<------------------------------------------+
 System.out.println("Ende von main");
 }  // Ende main
}  // Ende Klasse

