Enum-Variabel-Abfrage funktioniert nicht?

  • Themenstarter Themenstarter mickedplay
  • Beginndatum Beginndatum
M

mickedplay

Gast
Hey ho,

ich versuche schon seit einiger Zeit mein Problem zu lösen, es wird aber nichts. Um euch nicht meinen geheimen Code zu zeigen, hab ich es stark anhand von Wochentagen vereinfacht. :bae:

Java:
public class Main
{
	public static void main(String[] args)
	{
		System.out.println(Wochentag.setzeWochentag("Spielername", "dienstag"));
	}
}
Java:
public enum Wochentag
{
	MONTAG,
	DIENSTAG,
	MITTWOCH,
	DONNERSTAG,
	FREITAG,
	SAMSTAG,
	SONNTAG;
	
	public static boolean setzeWochentag(String name, String tag)
	{
		tag = tag.toUpperCase();
		for(Wochentag wt : Wochentag.values())
		{
			System.out.println(wt);
			if(wt.name().equalsIgnoreCase(tag))
			{
				System.out.println("exists");
				return true;
			}
			System.out.println("Wochentag '" + tag + "' existiert nicht!");
			return false;
		}
		return false;
	}
}

Wieso spuckt er immer nur das erste, also Montag aus? Wenn ich Montag eingebe, sagt er, dass es existiert. Wenn's aber Dienstag oder sonstwas ist, soll's das angeblich nicht geben.

Mach ich vielleicht was beim Abfragen falsch?

Hoffe, ihr versteht, was ich möchte.
Danke sehr!
 
Weil du in der Schleife schreibst "return false" nachdem du gegen den ersten Wert überprüft hast.
So muss es richtig lauten
Java:
public enum Wochentag
{
     MONTAG,
     DIENSTAG,
     MITTWOCH,
     DONNERSTAG,
     FREITAG,
     SAMSTAG,
     SONNTAG;
 
     public static boolean setzeWochentag(String name, String tag)
     {
          for(Wochentag wt : Wochentag.values())
          {
               System.out.println(wt);
               if(wt.name().equalsIgnoreCase(tag))
               {
                    System.out.println("exists");
                    return true;
               }
          }
          System.out.println("Wochentag '" + tag + "' existiert nicht!");
          return false;
     }
}

außerdem kannst du dir das "tag.toUpperCase()" sparen wenn du danach equalsIgnoreCase verwendest. Das deutet aber auch schon der Methodenname selber an 😉
 
Zuletzt bearbeitet:
Weil du in der Schleife schreibst "return false" nachdem du gegen den ersten Wert überprüft hast.
So muss es richtig lauten
Java:
public enum Wochentag
{
     MONTAG,
     DIENSTAG,
     MITTWOCH,
     DONNERSTAG,
     FREITAG,
     SAMSTAG,
     SONNTAG;
 
     public static boolean setzeWochentag(String name, String tag)
     {
          for(Wochentag wt : Wochentag.values())
          {
               System.out.println(wt);
               if(wt.name().equalsIgnoreCase(tag))
               {
                    System.out.println("exists");
                    return true;
               }
          }
          System.out.println("Wochentag '" + tag + "' existiert nicht!");
          return false;
     }
}

außerdem kannst du dir das "tag.toUpperCase()" sparen wenn du danach equalsIgnoreCase verwendest. Das deutet aber auch schon der Methodenname selber an 😉

Vielen Dank Network! Ich werde es morgen, also heute, mal testen, aber es leuchtet ein und sollte funktionieren. Vielen Dank! 🙂
 

Zurück
Oben