Kontrollstrukturen

Panda9296

Bekanntes Mitglied
Hi Leutz ich bins mal wieder

folgendes: Ich lerne zur Zeit die Kontrollstrukturen mit Java und ich lerne zu meinen SGD Lehrgang und meinem Buch "Schrödinger programmiert Java" auch mit simpleclub um mein Wissen mit den Aufgaben zu testen.

So ich weiß, dass man beim programmieren kreative Ansätze und Methoden variieren kann, solange der Code effizient ist. Ich bin heute bei einer Aufgabe von simpleclub an diesem Punkt angelangt und möchte euch fragen: Ist das Blödsinn WIE ich es gemacht habe oder ist die Variante sogar besser. Wenn ja warum wenn nein was kann ich besser machen =). Ich poste die Aufgabe und hoffe, dass ich es so leserlich wie möglich machen kann:

Diese Kontrollstruktur soll in eine FOR- Schleife gepackt werden:

public class DoWhile {

public static void main (String [] args ){

int auto = 5;
double beschleunigung = 5;
double speed;
boolean gas;

gas = true;
System.out.println("Drück aufs Gas!");

do {
speed = auto*beschleunigung;
System.out.println("Speed = " + speed);
beschleunigung -= 0.5;

}while (speed > 0);

if(speed == 0){
System.out.println("Das war's?");
}

}

}


So mein Code ist jetzt folgendermaßen:

package de.datentypprüfung.miguel.java;
import java.lang.*;


public class Datentypen {

public static void main(String[] args) {

double auto = 5.0;
double beschleunigung = 5.0;
boolean gas = true;
double speed;

for(;gas=beschleunigung>0;beschleunigung -= 0.5) {
speed = auto*beschleunigung; // ich denke diese Zeile kann ich auch in die FOR-Parameter einfügen
System.out.println("Speed = " + speed); // Wiedeholungsanweisung
if(beschleunigung >= 0) {

System.out.println(beschleunigung <= 0.5? "Das Wars": " Gib Gas");
}

}
}

}


Die Musterlösung weicht doch ein wenig ab, das Ergebnis sollte das Selbe sein :

public class For {

public static void main (String [] args){

int auto = 5;
double beschleunigung = 5;
double speed;
boolean gas;

gas = true;
System.out.println("Drück aufs Gas!");

speed = auto*beschleunigung;
if (speed == 0){
System.out.println("Speed " + speed);
}

for (speed = auto*beschleunigung; speed >0; beschleunigung-=0.5 ){

speed = auto*beschleunigung;
System.out.println("Speed = " +speed);

}

if(speed == 0){
System.out.println("Das war's?");
}

}

}

Ich finde meine Variante doch besser, aber ich habe Angst etwas nicht verstanden zu haben.
 

Tarrew

Top Contributor
Also die Ausgabe deiner Lösung sieht schon deutlich anders aus, als die Musterlösung, da du nach jedem Schritt nochmal "Gib Gas" ausgibst. Die if-Bedingung verschiebst du am besten aus der Schleife raus. Außerdem fehlt bei dir die Ausgabe "Speed = 0". Du hörst bereits bei Speed = 2.5 auf.

Die Musterlösung ist aber tatsächlich etwas länger als nötig, die erste if-Bedingung kann man sich sparen und in die for-Schleife verschieben. Welche Variante man jetzt allgemein umsetzt ist Geschmackssache.

Ich hätte die Musterlösung persönlich verkürzt auf:
Java:
class For {
    public static void main(String[] args) {
        int auto = 5;
        double beschleunigung = 5;
        double speed;

        System.out.println("Drück aufs Gas!");
        for (speed = auto * beschleunigung; speed >= 0; beschleunigung -= 0.5, speed = auto * beschleunigung) {
            System.out.println("Speed = " + speed);
        }
        System.out.println("Das war's?");
    }
}
Spricht aber nichts gegen leicht angepasste Version deines Codes ;)
 

Ähnliche Java Themen

Neue Themen


Oben