Schleife mit 10 Wiederholungen die Werte überspringt

domme5599

Mitglied
Guten Morgen an die kompetenten Javabenutzer,

ich wollte gerne einen Währungsrechner programmieren. Innerhalb der Schule ist die Aufgabe bis jetzt nur n Schleifen für n Währungen zu progammieren und das ist ja auch noch simpel zu schreiben. Jetzt möchte ich für mich selbst einen Rechner programmieren der USD in EUR umrechnet. Die Besonderheit soll hier aber sein, dass dieser Werte auslässt. Er soll also nur 1, 2, 5 und 10 USD umrechnen und die restlichen Werte dann einfach in
der Schleife überspringen. Mein Lösungsansatz wäre eine while Schleife die mit if an die Bedingung geknüpft ist, dass wenn x==3, 4, 6, 7, 8, oder 9 ist sie diese Werte ùberspringt und das solange bis ein Wert kommt der if nicht erfüllt und dann weitermacht.
Meinen genauen Quelltext würde ich gleich reinsetzen.

Zum Programmieren benutze ich JDK 11 aktuell. Der Quelltext wird im Editor geschrieben und kompiliert von javac aus JDK. Ausführen tue ich die class über die Eingabeauforderung.
 

mihe7

Top Contributor
Wenn ich Dich richtig verstehe, dann gibt Euer Währungsrechner eine "Umrechnungstabelle" für die Beträge von 1 bis 10 (Geldeinheiten) aus, Du möchtest in Deiner Tabelle aber nur 1, 2, 5 und 10 haben?

Nachtrag: kann es sein, dass die Umrechnungstabelle für 1..n (mit beliebigem n>0) erzeugt wird und Du im Bereich von 1 bis 10 nur die Werte 1, 2, 5 und 10 berücksichtigen willst?
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Dann hast Du Dir die Lösung ja schon gegeben :)

Ausgabe erfolgt, wenn n != 10 ODER n == 10 UND (x == 1 ODER x == 2 ODER x ==5 ODER x == 10).
 

domme5599

Mitglied
Java:
public class Umrechnung0WSchleife {
   
    public static void main(String[] args) {
       
        double kurs1 = 0.87;     //USD in EUR Kurs 08.10.2018
   
        int o=1;        //Definition einer Variable o mit dem Datentyp integer

        while(o<11) {    //Schleife mit Variable o gleich 1 und fortgeführt bis o kleiner als 9

        if(o==3 && o==4 && o==6 && o==7 && o==8 && o==9) {
                  
        o++;
        continue;

        }
       
        System.out.println((o)+"GBP = "+(o*kurs1)+" EUR");
        o++;
       
       

        }

        

   
    }
}
 

mihe7

Top Contributor
Das geht natürlich. Das continue ist aber etwas, das man nicht gerne sieht, weil es nichts anderes als ein GOTO ist. Gegenvorschlag:
Java:
if (o == 1 || o == 2 || o == 5 || o == 10) {
    System.out.println(o + " GBP = " + (o*kurs1) + " EUR");
}
o++;
 

mihe7

Top Contributor
Beachte auch den kleinen Unterschied zwischen "ich will 1,2,5,10 ausgeben" und "ich will 3,4,6-9 auslassen". Der wird deutlich, wenn Du Deinen und meinen Ansatz nimmst und das n > 10 setzt.
 

domme5599

Mitglied
Ja den Unterschied habe ich schon festgestellt, aber danke für den weitergehenden Hinweis.
Das mit dem continue ist natürlich unschön, aber ich war mir nicht sicher wie ich die System.out.println einfügen muss damit das funktioniert.

Programm funktioniert danke für den Tip.
 

Oben