Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Kurz zum Problem.
Der User soll solange in volume bleiben bis er selber mit 0 dies verlässt und dann in das Menü davor zurückkehren.
Ich Weiss nicht was ich in der Schleife überprüfen soll. Entweder bekomme ich eine endlos Schleife oder er bricht nach der ersten Ausführung ab.
public static void main(String[] args) {
Tv Tv1 = new Tv();
int volume, channel, menu;
boolean status;
while (Tv1.menu() != 5) {
switch () {
case 1:
Tv1.status(JOptionPane
.showInputDialog("On = Schalte den Fernseher ein\n Off = Schalte den Fernseher aus\n "));
continue;
case 2:
Tv1.volume();
continue;
case 3:
Tv1.channel();
continue;
}
}
}
Der User soll 1-3 waehlen mit 5 beendet er das Programm. Das wenn ich Methode tv1.menu() in die switch schreibe ruft er diese immer 2 x hintereinader auf. wie speicher ich den returnwert so das ich ihn in der while schleife verwenden kann
import javax.swing.*;
class Tv {
int eingabe;
public int menu() {
int eingabe4 = Integer.parseInt(
JOptionPane.showInputDialog("1 = Status aendern & abfragen\n 2 = Lautstaerke aendern & abfragen\n"
+ "3 = Programm aendern & abfragen\n 5 = Beenden sie das Programm"));
return eingabe4;
}
boolean status(String eingabe3) {
boolean status1 = false;
if (eingabe3.equals("On")) {
status1 = true;
} else {
status1 = false;
}
if (status1 == true) {
System.out.println("Der Fernseher ist an");
} else {
System.out.println("Der Fernseher ist aus");
System.exit(0);
}
return status1;
}
void volume() {
int eingabe1 = 0;
do {
eingabe1 = Integer.parseInt(JOptionPane.showInputDialog(
"Geben sie eine Zahl zwischen 1 & 10 ein.\n" + "Ihre Aktuelle Lautstaerke ist " + eingabe1));
System.out.println(eingabe1);
} while (eingabe1 != 0);
}
void channel() {
int eingabe2 = 1;
do {
eingabe2 = Integer.parseInt(JOptionPane.showInputDialog(
"Geben sie eine Zahl zwischen 1 & 10 ein.\n" + "Ihre Aktuelles Programm ist " + eingabe2));
} while (eingabe2 != 0);
}
}
public class Fernseher {
public static void main(String[] args) {
Tv tv1 = new Tv();
int menu;
if ((tv1.status(JOptionPane.showInputDialog("On = Schalte den Fernseher ein\n Off = Schalte den Fernseher aus\n ")) == true)) {
while ((menu = tv1.menu()) != 5) {
switch (menu) {
case 1:
tv1.status(JOptionPane
.showInputDialog("On = Schalte den Fernseher ein\n Off = Schalte den Fernseher aus\n "));
continue;
case 2:
tv1.volume();
continue;
case 3:
tv1.channel();
continue;
case 5:
System.exit(0);
}
}
}else {
System.exit(0);
}
}
}
Aufgabenstellung:
Erstellen Sie ein Programm, das einen Fernseher als Objekt abbildet. Der Fernseher soll mindestens folgende Eigenschaften haben:
• Lautstärke,
• Programm und
• eingeschaltet beziehungsweise ausgeschaltet.
Alle drei Eigenschaften sollen geändert werden können. Beachten Sie bei der Umsetzung bitte folgende Vorgaben:
• Eine Änderung von Lautstärke und Programm soll nur dann möglich sein, wenn der Fernseher eingeschaltet ist.
• Schalten Sie den Fernseher in Ihrem Programm mindestens einmal ein und ändern Sie die Lautstärke. Wechseln Sie mindestens dreimal das Programm. Schalten Sie den Fernseher dann wieder aus.
• Geben Sie nach jeder Änderung den aktuellen Zustand des Fernsehers auf der Konsole aus.
• Greifen Sie nur über die Methoden der Klasse auf die Instanzvariablen zu. Das gilt auch für die Ausgabe der Werte.
Habe ich die Aufgabenstellung damit richtig verstanden und umgesetzt?
Noch ein paar Dinge:
1. das macht den Code zwar nicht weniger korrekt aber wenn Du keinen Obfuscation-Wettbewerb gewinnen willst, dann gib den Variablen sinnvolle Namen
2. wenn nichts anderes gefordert ist, würde ich den Konstruktor entfernen: ein neuer Fernseher steht auf Kanal 0, hat Lautstärke 0 und ist ausgeschaltet.
3. "Eine Änderung von Lautstärke und Programm soll nur dann möglich sein, wenn der Fernseher eingeschaltet ist." - das würde für mich bedeuten, dass setVolume im ausgeschalteten Zustand überhaupt keine Änderung vornimmt, insbesondere also auch die Lautstärke nicht auf 0 setzt. Analog für Kanal.
Zu 3.: wenn sich der Fernseher die letzte Lautstärke den letzten Kanal nicht merken soll, dann wäre das etwas, was beim Ausschalten berücksichtigt werden müsste: sobald ich den Fernseher ausschalte, ist der Kanal 0 und die Lautstärke 0.