Fallunterscheidung mit Überprüfung (enum)

Pumpenpat

Mitglied
Guten Abend,

bin etwas ratlos. Hab schon viel gegoogelt aber wurde eig. nur noch mehr verwirrter. Wir haben folgende Aufgaben:

1)Schreibe einen Aufzählungstypen Ampel, der die Farben einer Fahrzeug-Ampel definiert.
Das wäre dann ja:
Java:
class Ampel {
  public static void main(String[] args) {
  }
}
enum Farbe { rot, gelb, gruen }
Oder lieg ich da falsch? Oder reicht nur die 5.Zeile und die Datei ist auch lauffähig?

2.) Deklarieren sie im Anschluss im Hauptprogramm (in einer seperaten Datei) eine Variable mit diesem Aufzähungstyp und führen Sie mit einer Fallunterscheidung eine Überprüfung durch. Bei der Überprüfung soll mit der Druck-Methode eine Ausgabe erfolgen, welche Farbe die Ampel hat und ob man fahren darf. Setzen sie danach die Ampelfarbe auf die nach Verkehrsregeln folgende Farbe und wiederholen sie obige Überprüfung.

Muss ich für die Fallunterscheidung if-else benutzen? Jedenfalls kam in den Vorlesungen bisher noch nichts vor was mir sinnvoller erscheint. Und wenn ja wie benutz ich das, weil ich für if boolsche Werte brauche.
Und wie deklarier ich eine Variable mit dem Aufzählungstypen?
Hab da ja an folgendes gedacht:
Java:
Farbe A = Farbe.rot;
	Farbe B = Farbe.gelb;
	Farbe C = Farbe.gruen;

Danke im vorraus schonmal für Hilfe.
 
Probiere es doch einfach aus. Installier dir eclipse, NetBeans oder von mir aus auch BlueJ, tippe deinen Code ein und siehe, was passiert.
Oder ist es Teil der Aufgabenstellung, dass du das Ganze ohne Kompiler löst?

Sagt dir switch-case schon etwas sonst ist if, else if, else schon richtig.


Eigentlich hast du eine "Farbe" vergessen.
 
Nein also zurzeit arbeite ich mit Notepad++. Aber so wie ich gehört habe, dürfen wir auch andere Programme benutzen. Jedoch kenne ich mich nicht damit aus.
Ja bisher hab ich dann ja folgendes gedacht:

Java:
package ampel;

public class Ampel {

	public static void main(String[] args) {
		Farbe A = Farbe.rot;
		Farbe B = Farbe.gelb;
		Farbe C = Farbe.gruen;
		if (A == Farbe.rot);
		System.out.println ("Anzeige rot. Stopp. Anhalten.");
		else (A= !rot);
		
	  }
	}
	enum Farbe { rot, gelb, gruen }

Jedoch bin ich mir jetzt nicht über das weitere Vorgehen klar. Also wie ich die Ampel auf die nächste Farbe schalten lasse.

Mit vergessener Farbe meinst du rotgelb?
 
Solange das dir die Packagestrukturen erstellen und kompilieren kann, ist alles gut. 😀

Sagen dir Schleifen schon etwas?

A = !rot. Was möchtest du damit bezwecken?


Du musst eine einzelne Variable haben, in der du die aktuelle Farbe speicherst und keine drei bzw. vier.



Genau die meine ich.
 
Okay.
Nein,schleifen sagen mir nichts.
! steht ja für nicht. Also wenn A nicht rot ist, dann soll es mir sagen welche Farbe stattdessen gerade leuchtet.
Das mit der einzelnen Variable verwirrt mich (auch aufgrund des enums). Da ich nicht wirklich weiß wie man damit arbeitet. Es war nur ein Beispiel auf dem Aufgabenzettel und danach hab ich den Enum für die Ampelfarben definiert.
Sonst wurde uns auch nichts zu dem enum gesagt.

Dann füg ich die mal lieber mit hinzu.
 
Ach so du meinst !=. = ! Ist eine Zuweisung für booleans.

Wenn du vier Variablen hast. Woher willst du dann wissen, welche Farbe die Aktuelle ist?

Wenn du nicht weißt, wie mab mit Variablen arbeitet, dann solltest du dir ein Buch oder ein Tutorial suchen.
 
Außerdem liest du nicht genau genug.

Aufgabenstellung:
1)Schreibe einen Aufzählungstypen Ampel, der die Farben einer Fahrzeug-Ampel definiert.

  • Hier steht nichts davon, dass das ein "ausführbares Programm" ergeben muss. (Also warum eine main()-Methode?)
  • Warum benennst du den Aufzählungstyp 'Farbe', wenn der Aufgabensteller 'Ampel' vorgibt?
Also
Java:
public enum Ampel { rot , gelb , gruen }
und fertig mit Aufgabe 1.

PS: Eine Ampel kann auch gelb_rot oder gelb_blinkend oder schwarz_aus sein.
Insofern muss ich Gucky widersprechen - es fehlen noch 3 Zustände, nicht nur einer.
 
Naja wir sollen lauffähige Java -Dateien hochladen. Daher die main-Methode. Oder hat das nichts damit zu tun?

2.) Deklarieren sie im Anschluss im Hauptprogramm (in einer seperaten Datei) eine Variable mit diesem Aufzähungstyp .............

Sprich für Aufgabe 1 legst du eine Datei an für das Enum, für Aufgabe 2 wird eine weitere Datei mit dem Hauptprogramm (der main Methode) verlangt.
 
Darf ich Senf dazu geben? 🙂
Fand die Aufgabe interessant, hab gerade nur leider nicht viel Zeit.
Trotzdem mal ein kleiner Ansatz, habs nicht getestet, also bitte verurteilt mich nicht ^^
Konstruktives Feedback ist aber immer herzlich wilkommen x3

[Java]package ampel;

public enum AmpelFarbe
{
ROT(),
GRUEN(),
GELB();
}[/code]

Java:
package ampel;

public class AmpelMain
{
	private AmpelFarbe farbe = AmpelFarbe.GRUEN;
	
	public AmpelMain()
	{
		String erlaubnis = "";
		String sFarbe;

		if(farbe == AmpelFarbe.GRUEN)
		{
			sFarbe = "grün";
			this.farbe = AmpelFarbe.GELB;
		}
		else if(farbe == AmpelFarbe.GELB)
		{
			sFarbe = "gelb";
		}
		else
		{
			sFarbe = "rot";
			erlaubnis = "nicht ";
			this.farbe = AmpelFarbe.ROT;
		}
		System.out.println("Die Ampel hat die Farbe " + sFarbe + ". Sie dürfen " + erlaubnis + "fahren.");
	}
	
	public static void main(String[] args)
	{
		new AmpelMain();
	}
}
 
Es ist ein Ansatz, auf dem sich aufbauen lässt (mehrere Durchläufe, variabler Anfang etc.).
Ich habe spontan keinen Fehler gefunden, nur speicherst du die Farbe als Enum und als String.
 
Für enum-Tests ist ein switch schöner;
um eine Ampelfarbe als String zu erhalten, sollte man farbe.toString() verwenden, und (wenn's denn sein muss) die .toString() im enum überschreiben. (Wird in den Java-APIs bei java.lang.Enum so empfohlen 🙂...)
Ansonsten bleib' ich bei meinen obigen Anmerkungen, die wohl ebenfalls akut bleiben...

Ach ja, dass 'erlaubnis' "" oder "nicht " ist ~ thematisch sollte das boolean sein, aber ok. Nur der Blank hinter "nicht " ist unschön, den würde man wohl nicht erwarten. (Falls jemand auf die Idee kommt: If( erlaubnis.equals("nicht") ) abzufragen, rechnet er bestimmt nicht mit 'nem Blank hinten dran.)
 
Zuletzt bearbeitet:

Zurück
Oben