Auto fahren mit Java
(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
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
Ja, *.java ist eine gültige Java Datei.
Tatsächlich, das sc.close() gehört in den switch-case block. Habe es korrigiert.
!LUV
@jeyf123, @ozelot47(4/10) sent LUV. | connect | community | HiveWiki | NFT | <>< daily
! help
(no space) to get help on Hive. InfoIch 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.
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.
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.
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.
aah
!LOL
!invest_vote
!BEER
lolztoken.com
A duckumentary.
Credit: reddit
@ozelot47, I sent you an $LOLZ on behalf of dotwin1981
(6/10)
Delegate Hive Tokens to Farm $LOLZ and earn 110% Rewards. Learn more.
View or trade
BEER
.Hey @ozelot47, here is a little bit of
BEER
from @dotwin1981 for you. Enjoy it!Did you know that <a href='https://dcity.io/cityyou can use BEER at dCity game to buy cards to rule the world.
@dotwin1981 denkt du hast ein Vote durch @investinthefutur verdient!
@dotwin1981 thinks you have earned a vote of @investinthefutur !