Java: Wie kann ich in switch-Statements Benutzereingaben verarbeiten?

Hallo!

Also, ich muss eine Ampel in Java basteln. Die Ampel soll wechseln:

rot => rot-gelb => gelb => grün => rot => rot-gelb => gelb...

Ich habe jetzt ein Switch Statement (switch case) verwendet:

 public class TrafficLight {
public static void main(String[] args) {

    int tl = 2;
    String tlString;
    switch (tl) {
        case 1:  tlString = "red";
                 break;
        case 2:  tlString = "red-yellow";
                 break;
        case 3:  tlString = "green";
                 break;
        case 4:  tlString = "yellow";
                 break;
        default: tlString = "Invalid tl";
                 break;
    }
    System.out.println(tlString);

}
 }

Das funktioniert schonmal, aber ich bekomme nur „red-yellow” als Ausgabe. Damit ist die 1. Hälfte getan. Nun müsste der Benutzer nur noch eine Aktion machen (z.B. „c” eingeben). und dann sollte die Ampel umschalten (also auf grün wechseln). Ich habe also mit

  import java.util.Scanner;

den Scanner importiert (1. Zeile) und dann zwischen die letzten beiden geschweiften Klammern (s.o.)

public static void input(String[] args) {

    Scanner scan = new Scanner(System.in);
    int y = scan.nextInt();

    System.out.println("Please enter a the letter c:");
    int year = scan.nextInt();

}

eingefügt. Aber Java gibt noch nichtmal die Ausgabe aus, dass eine Eingabe erwartet wird und Eingaben sind auch nicht möglich! Was mache ich falsch? Oder ist die Idee generell falsch?


Hier die Aufgabe im Original:

Implementieren Sie die Steuerung einer Verkehrsampel. Die Verkehrsampel kann sich dabei ausschlielich in einem der folgenden vier Zustände benden: rot, rot-gelb, grün und gelb. Die Ampel darf dabei nur von rot auf rot-gelb, von rot-gelb auf grün, von grün auf gelb und von gelb auf rot umschalten. Schreiben Sie eine Klasse TrafficLight, die diesen Anforderungen genügt. Die Klasse soll jeweils eine Methode zum Weiterschalten der Ampel zwischen den erlaubten Zuständen anbieten. Ferner sollte es möglich sein, denaktuellen Zustand der Ampel auf den Bildschirm auszugeben. Schreiben Sie eine Main-Methode, in der Sie ihre Implementierung gründlich testen.


Danke im Voraus!

Programmierung, Java, Programmiersprache, Ampel, Case, Switch
2 Antworten
Problem beim Verständnis PHP und mysqli oder doch mysql?

Hallo, ich lerne gerade PHP insbesondere mit dem Buch "PHP 5.5 und MySQL 5.6".

Dort wird angegeben das sämtliche Funktionen auf Basis von mysqlconnect(), mysqlselect_db() etc. demnächst als "deprecated" gekennzeichnet werden.

Was mich irritiert ist, dass ich dies noch nirgendwo so gelesen habe. Zumindest habe ich dies auf "php.net" noch nicht so raus gelesen.

Doch nun zu meinem Problem:

Laut dem Buch ändert sich an den Funktionen nicht weiter außer, dass anstatt mysql noch das i hinzu kommt und alles entsprechend zu mysqli wird.

Weiterhin habe ich gelesen, dass die Funktion mysqli_ affected_ rows() das gleiche Ergebnis liefern soll wie mysqli_ num _rows().

/* Verbindung aufnehmen */
$hostname = "localhost";
$dbusername = "root";
$dbname = "firma";
$dbpassword = "******";

$dbconnect = mysqli_connect($hostname, $dbusername, $dbpassword);

/* Datenbank auswählen */
mysqli_select_db($dbconnect, $dbname);

/* SQL-Abfrage ausführen */
$res = mysqli_query($dbconnect, "select * from personen");
$res2 = mysqli_query($dbconnect, "select * from personen");

/* Anzahl der Datensätze ermitteln und ausgeben */
$num = mysqli_num_rows($res);
$num2 = mysqli_affected_rows($res2);
echo "$num Datensätze gefunden <br/>";
echo "$num2 Gefunden<br/>";

/* Datensätze aus ergebnis ermitteln,
 * in Array speichern und ausgeben */
while($dsatz = mysqli_fetch_assoc($res))
{
    echo    $dsatz["name"] . ", "
            . $dsatz["vorname"] . ", "
            . $dsatz["personalnummer"] . ", "
            . $dsatz["gehalt"] . ", "
            . $dsatz["geburtstag"] . "<br/>";
}

/* Verbindung schließen */
mysqli_close($dbconnect);

Die Werte res2 und num2 sind für mich zum Verständnis und waren nicht im Buch.

Wenn ich es richtig verstehe ist es so, dass man am Anfang die Verbindung zum Server aufnimmt und die Datenbank wählt.

$res enthält nach der SQL Abfrage die Ergebniswerte. (ebenso res2) Um zu erfahren wie viele Datensätze enthalten sind wird mysql num rows() verwendet und die Anzahl in num gespeichert.

Nachdem es heißt das es mit msqli affected rows() genauso funktioniert, habe ich es einfach 1:1 versucht zu übertragen. Erhalte dabei aber nur die Fehlermeldung: Warning: mysqliaffectedrows() expects parameter 1 to be mysqli, object given in D:\xampp\htdocs\workspace\PHPLernen\Kap4DBmitMySQL\2PHPundMySQL\1_dbanzeigen.php

Kann mir jemand erklären woran es liegt? Und natürlich wie es richtig ist. ^^

Danke bereits im Vorraus.

Programmierung, MySQL, PHP, SQL, Webentwicklung
2 Antworten

Meistgelesene Fragen zum Thema Programmierung

xcopy-Batchdatei - Warum ist zyklisches Kopieren nicht möglich?

2 Antworten

Wie kann ich mit Batch einen "Hintergrundsound" abspielen?

2 Antworten

Mit welcher Programmiersprache entwickelt man spiele?

2 Antworten

Java Projekte für Einsteiger.

4 Antworten

Wo kann man Visual Studio Express 2013 für Windows Desktop herunterladen (Deutsch)?

2 Antworten

Wie kann ich eine Digitaluhr mit java programmieren?

4 Antworten

Einzelnen Befehl in einer Batch mehrmals ausführen (ohne Schleife) ?

4 Antworten

Makros und Programmierung bei Excel: schwer zu erlernen?

4 Antworten

Wie kann ich auf einer Webseite ein Videolink extrahieren?

3 Antworten

Programmierung - Neue und gute Antworten