Bin im ersten semester wirtschaftsinfo an einer fh. Wir lernen java.
Habe mal ein übungsblatt durchgearbeitet und bin bei einer aufgabenstellung wo ich etwas einfach nicht nachvollziehen kann (es geht um typ umwandlungen).
Es soll eine methode geschrieben werden, die einen übergebenen integer wert (sehr wichtig: Integer) überprüft oder die zahl gerade ist oder nicht.
An und für sich funktioniert mein programm.
public static void main (String [] args)
{
double y ;
StdEingabe instream_ref = new StdEingabe () ;
boolean x ;
y = instream_ref.liesDoubleN ("Zahl eingeben: ") ;
x = istUngerade (y) ;
System.out.println (x) ;
} //endmain
public static boolean istUngerade (int zahl)
{
boolean gerade ;
double zahl2 ;
zahl2 = zahl ;
zahl2 = (zahl2/2*10) % 10 ;
if (zahl2 == 5)
gerade = false ;
else
gerade = true ;
return gerade ;
} //end istUngerade
(ja, natürlich könnte man das ganze nun weniger umständlich machen, aber das war mein erster ansatz und es hat geklapt

)
Das problem ist: der methode istUngerade wird ein int übergeben, ich brauche aber einen float/double wert um durch 2 teilen zu können und zu ermitteln ob hinter dem komma 0 oder 5 steht (bei 0 = zahl grade, bei 5 = zahl ungerade). Wenn ich aber bei der rechnung nicht die double variable zahl2 verwenden würde und das ganze versuchen würde mit einer expliziten typumwandlung (double) zu machen meckert mein compiler. Er sagt dass er einen int wert erwartet. O_o
Ich dachte man kann int in double problemlos umwandeln?
Konkret würde meine methode dann so aussehen dann:
public static boolean istUngerade (int zahl)
{
boolean gerade ;
zahl = (double) (zahl/2*10) % 10 ;
if (zahl2 == 5)
gerade = false ;
else
gerade = true ;
return gerade ;
} //end istUngerade
Aber dann meckert der compiler.... wieso?