Auto fahren mit Java

avatar
(Edited)

Mit dieser kleinen Java Anwendung habt ihr die Möglichkeit ein bisschen Auto zu fahren. Genauer, ihr dürft Gänge schalten. Das ist doch mal was.

With this small java application you have the opportunity to drive a car. Or to be more precise, you are allowed to shift gears. Great isn't it?

import java.util.Scanner;

public class MyCar {

    public enum Movement{
        REVERSE, NEUTRAL, FORWARD
    }

    private int actualGear;
    private Movement movement;

    public MyCar(){
        actualGear = 0;
        movement = Movement.NEUTRAL;
    }

    private void shiftUp(){
        if(actualGear == -1){
            actualGear++;
            neutral();
        } else if(actualGear >= 0 && actualGear < 5){
            actualGear++;
            movement = Movement.FORWARD;
        }
    }

    private void shiftDown(){
        if(actualGear > 1){
            actualGear--;
        } else if(actualGear == 1){
            actualGear--;
            neutral();
        } else if(actualGear == 0){
            reverse();
        }
    }

    private void neutral(){
        movement = Movement.NEUTRAL;
    }

    private void reverse(){
        if(actualGear == 0){
            actualGear = -1;
            movement = Movement.REVERSE;
            System.out.println("Look in the rear-view mirror!");
        }
    }

    private void printStatus(){
        System.out.println("Gear:"+actualGear+" Movement:"+movement);
    }


    public static void main(String[] args) {
        MyCar driver = new MyCar();
        Scanner sc = new Scanner(System.in);
        while(true){
            String choose = sc.nextLine();
            switch(choose){
                case "w":
                    driver.shiftUp();
                    break;
                case "s":
                    driver.shiftDown();
                    break;
                case "x":
                            sc.close();
                    return;
               default:
                    continue;
            }
            driver.printStatus();
        }
    }
}



0
0
0.000
12 comments
avatar

Das ist eine Konsolenanwendung, nehme ich an?
Nachdem ich leider vergessen habe, wie der Standardsuffix von Java ist, habe ichs mal
auto.java getauft.Lustigerweise hat Linux daraus tatsächlich ein Java-Icon (mit Tasse) gemacht. Oder ist .java tatsächlich eine gültige Java Endung?

Leider erzeugt es bei mir einen Fehler, ich bin aber nicht sicher, ob das an mir oder am Code liegt, denn du hast in sicher getestet.

java ./auto.java
./auto.java:74: error: unreachable statement
sc.close();
^
1 error
error: compilation failed

0
0
0.000
avatar

Ja, *.java ist eine gültige Java Datei.
Tatsächlich, das sc.close() gehört in den switch-case block. Habe es korrigiert.
!LUV

0
0
0.000
avatar

Ich weiß leider nicht, wie es vorher ausgesehen hat, aber ich glaube es befindet sich nicht im oberen switch-Block. Ich hätte es selbst versucht, aber leider weiß ich überhaupt nicht, auf welcher Position und noch weniger, mit welcher Einrückung.

0
0
0.000
avatar

Vorher hatte ich den Scanner außerhalb der while-Schleife geschlossen. Da ich für den Fall (case x) mit return nicht nur die Schleife, sondern auch die Funktion vorzeitig beendet hatte, konnte der Code nicht erreicht werden. Durch das schließen des Scannern in dem case x wurde das Problem behoben.

0
0
0.000
avatar

Witzig, jetzt hab ich keine Fehlermeldung mehr; dafür passiert einfach nichts mehr (also es kommt nichts mehr nach der Befehlseingabe java ./auto.java)

Das liegt aber jetzt offensichtlich an mir, wenns bei dir läuft.

0
0
0.000
avatar

Zugegeben, ich hätte etwas zur Bedienung schreiben sollen :)

Wenn du die Anwendung startest, dann kannst du mit der Eingabe von 'w' ein Gang höher schalten. Mit 's' schaltest du ein Gang zurück und mit 'x' beendest du die Anwendung. Wenn du s,w oder x eingegeben hast, dann nur noch mit Enter bestätigen. Es sollte eine Konsolenausgabe erscheinen in welchem Gang du du befindest und in welcher Richtung du dich fortbewegst.

0
0
0.000
avatar

aah

java ./auto.java
w
Gear:1 Movement:FORWARD
w
Gear:2 Movement:FORWARD
w
Gear:3 Movement:FORWARD
w
Gear:4 Movement:FORWARD
w
Gear:5 Movement:FORWARD
w
Gear:5 Movement:FORWARD
s
Gear:4 Movement:FORWARD
s
Gear:3 Movement:FORWARD
s
Gear:2 Movement:FORWARD
s
Gear:1 Movement:FORWARD
s
Gear:0 Movement:NEUTRAL
s
Look in the rear-view mirror!
Gear:-1 Movement:REVERSE
s
Gear:-1 Movement:REVERSE

0
0
0.000