if/else-Anweisung ohne else -gelöst-

  • Java

  • veloce
  • 4373 Aufrufe 8 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • if/else-Anweisung ohne else -gelöst-

    Hallo,

    mein Programm funktioniert zwar, doch nicht so richtig.
    Sobald ich im letzten Schritt } else { statt if } (xDiff == xDiff) { anweise zeigt mir die Konsole immer den Satz "Max hat sein Handy einstecken an". Egal ob die Koordinante übereinstimme oder nicht. Warum ist das so?

    Quellcode

    1. public class XXX {
    2. public static void main(String[] args){
    3. int xMax = 5;
    4. int yMax = 10;
    5. int xPhone = 5;
    6. int yPhone = 10;
    7. int xDiff = xMax - xPhone;
    8. int yDiff = yMax - yPhone;
    9. if (xDiff == 0) {
    10. System.out.println("x-Koordinanten sind gleich");
    11. } if (xDiff < 0) {
    12. System.out.println("Max geht " + Math.abs(xDiff) + " Schritt(e) nach rechts");
    13. } if (xDiff > 0) {
    14. System.out.println("Max geht " + Math.abs(xDiff) + " Schritt(e) nach links");
    15. } if (yDiff == 0) {
    16. System.out.println("y-Koordinaten sind gleich");
    17. } if (yDiff > 0) {
    18. System.out.println("Max geht " + Math.abs(yDiff) + " Schritt(e) zurück");
    19. } if (yDiff < 0) {
    20. System.out.println("Max geht " + Math.abs(yDiff) + " Schritt(e) nach vorn");
    21. } if (xDiff == yDiff) {
    22. System.out.println("Max hat sein Handy einstecken");
    23. }
    24. }
    25. }
    Alles anzeigen


    PS.: Wie habt ihr des Java-Programm so schön in euren Post einbinden können?
    mfg veloce

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von veloce () aus folgendem Grund: Code-Tag hinzugefügt

  • Ist das Programm dann, so wie ich es geschrieben habe "schöner" bzw. in Ordnung?

    EDIT: Mir fällt grad auf, dass ich vmtl einen klitzekleinen Denkfehler mache. If und else-Anweisungen müssen gar nicht zwangsläufig miteinander geführt werden oder? Nötig sind wahrscheinlich nur die if-Anweisungen. Die else Anweisung dient nur der Vereinfachung. Wenn ich z.b. sagen will ist "x < 5" schreibe "xyz" ansonsten (also else = sprich für alle anderen Fälle) schreibe "abc".
    Wenn ich mehrere Bedingungen habe kann ich durchaus nur mit if-Anweisungen arbeiten.

    Sehe ich das richtig?
    mfg veloce

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von veloce ()

  • Ist das Programm dann, so wie ich es geschrieben habe "schöner" bzw. in Ordnung?


    Schön ist anders, aber in Ordnung ist es wenn es das macht was du möchtest ;)

    Etwas kompakter ginge es z.B. mit bedingten Ausdrücken:

    Quellcode

    1. if (xDiff == yDiff) System.out.println("Max hat sein Handy eingesteckt");
    2. else {
    3. System.out.println( "Max geht " + Math.abs(xDiff) + " Schritte nach " + ((xDiff<0) ? "rechts" : "links"));
    4. System.out.println( "Max geht " + Math.abs(yDiff) + " Schritte nach " + ((yDiff<0) ? "zurück" : "vorn"));
    5. }


    Sehe ich das richtig?


    Der erste Teil ist richtig. Mehrere Bedingungen lassen sich ansonsten auch noch mit switch/case prüfen, allerdings nur, wenn eine Variable auf konstante Werte überprüft wird, Wertebereich wie in deinem Fall sind nicht möglich.
  • An sich würde ich es eher als schlechten Programmierstil bezeichnen, wenn jemand anstatt if/else if.../else if/if... verwendet, mal abgesehen von der deutlich schlechteren Performance.

    Vorzuziehen wäre definitiv

    Quellcode

    1. if (xDiff == 0) {
    2. System.out.println("x-Koordinanten sind gleich");
    3. }
    4. else if (xDiff < 0) {
    5. System.out.println("Max geht " + Math.abs(xDiff) + " Schritt(e) nach rechts");
    6. }
    7. else if (xDiff > 0) {
    8. System.out.println("Max geht " + Math.abs(xDiff) + " Schritt(e) nach links");
    9. }
    10. if (yDiff == 0) {
    11. System.out.println("y-Koordinaten sind gleich");
    12. }
    13. else if (yDiff > 0) {
    14. System.out.println("Max geht " + Math.abs(yDiff) + " Schritt(e) zurück");
    15. }
    16. else if (yDiff < 0) {
    17. System.out.println("Max geht " + Math.abs(yDiff) + " Schritt(e) nach vorn");
    18. }
    19. if (xDiff == yDiff) {
    20. System.out.println("Max hat sein Handy einstecken");
    21. }
    Alles anzeigen


    mfg Undeath
    "General, der Mensch ist sehr brauchbar. Er kann fliegen und er kann töten.
    Aber er hat einen Fehler: Er kann denken." - Brecht
    I Don't smoke, I don't drink, I don't fuck! At least I can fucking think!
  • Hey,

    jetzt versteh ich wie das gemeint ist. Hab gedacht ich muss bei dieser else if Anweisung alles in eine Zeile schreiben.
    Aber so aufgesplittet schaut das natürlich sehr schön aus.

    Dankeschön. Werds heut abend nochmal umtippen. Erstmal ohne zu spicken. Vielleicht bekomm ichs ja so zum Laufen. Merci euch beiden...
    mfg veloce