Hi Leute,
Bin gerade dabei java zu lernen und habe jetzt einen Error bei einer if-Funktion:(
Hier ist die Code Zeile:
if ((tag == gtag) && (monat = gmonat)) {
System.out.print("Happy birthday!
");
} // end of if
Und hier die Error Meldung:
Geburtstagsrechner.java:26:23: error: bad operand types for binary operator '&&'
if ((tag == gtag) && (monat = gmonat)) {
^
first type: boolean
second type: int
Könntet Ihr mir vielleicht sagen, was ich falsch gemacht habe?
Vielen Dank im Voraus!
Rechts und links von dem Doppelund muß ein Boolean stehen.
Links (first type) ist boolean und somit ok
Rechts (second type) ist ein integer.
(monat = gmonat) liefert einen int zurück, da gmonat der variable monat zugewiesen wird und monat ein int ist.
da du allerdings monat und gmonat vergleichen möchtest benötigst du ein Doppeltes Gleichheitszeichen und kein Einfaches.
Doppelt ist Verleich, Einfach ist Zuweisung.
if (tag.equals(gtag) & monat.equals(gmonat))[/QUOTE]
in der richtigen Form (beides “==” und ohne die unnötigen Klammern) ist der obige Ausdruck klar “einfacher”, wenn man nicht nur mit Java aufgewachsen ist.
Zu der obigen Verwirrung zur Kurzschlussauswertung hier nochmal ein kleines Programm:
if (tag.equals(gtag) & monat.equals(gmonat))[/QUOTE]
Der zweite Ausdruck ist doch völlig beschauert: völlig unmotiviert ein logisches UND zwischen zwei booleans durch ein bitweises und ersetzt, völlig unmotiviert einen Vergleich von primitiven Typen (int) mit equals durchgeführt - das ist Quark.
Ich habe mir mal die Mühe gemacht, Sens Vorschlag nachzukommen, OT zu verschieben (entsprechender Beitrag gelöscht, weil obsolet). Die Diskussion über Binäre Operatoren findet ihr hier…