hi!
Ich habe folgendes Problem!
Ich habe eine ganzzahlige Zufallszahl mit namen aktuell_staebchen.
Nun muss ich eine Zufallszahl (mit namen abzug) erzeugen, die zwischen 1 (inklusive) und der hälfte (allerdings nur ganzzahlig, es wird abgerundet!) -2 von aktuell_staebchen liegt!
Ein Beispiel:
aktuell_staebchen = 60
abzug = Zufallszahl zwischen 1 und 28!
Das wäre ja kein Problem!
Nun das schwierigere:
aktuell_staebchen = 61
abzug = Zufallszahl zwischen 1 und 28 (eigentlich 30,5, aber da ja nur ganzzahlige zahlen benutzt werden und abgerundet wird, muss ich 30 nehmen!)
ich hab das ganze folgendermaßen probiert!
ich habe auch schon dran gedacht, einfach nru zu prüfen ob aktuell_staebchen gerade oder nicht ist, und wenn sie ungerade ist, dann einfach -1 zu rechnen und dann erst durch 2 zu teilen, aber das problem liegt woanders!
Wenn ich compilen will (ich benutze BlueJ -> von der schule aus vorgegeben), dann gibt er mir folgenden Fehler "possible loss of precision" in der zeile
.... ich denke mal das liegt daran, dass er denkt, ich hätte was flasch deklariert,da werte in ist udn aktuell_halb double ... aber da ich ja erst prüfe ob die ausgangszahl gerade ist oder nicht, achte ich schon auf int und double!
nun meine frage: wie kann ich das umgehen, bzw. so umschreiben dass es klappt...
Danke schon einmal für Eure Antworten!
Marc
Ich habe folgendes Problem!
Ich habe eine ganzzahlige Zufallszahl mit namen aktuell_staebchen.
Nun muss ich eine Zufallszahl (mit namen abzug) erzeugen, die zwischen 1 (inklusive) und der hälfte (allerdings nur ganzzahlig, es wird abgerundet!) -2 von aktuell_staebchen liegt!
Ein Beispiel:
aktuell_staebchen = 60
abzug = Zufallszahl zwischen 1 und 28!
Das wäre ja kein Problem!
Nun das schwierigere:
aktuell_staebchen = 61
abzug = Zufallszahl zwischen 1 und 28 (eigentlich 30,5, aber da ja nur ganzzahlige zahlen benutzt werden und abgerundet wird, muss ich 30 nehmen!)
ich hab das ganze folgendermaßen probiert!
Code:
if(aktuell_staebchen % 2 == 0) // zum herausfinden ob die zahl gerade ist oder nicht!
{werte = aktuell_halb - 2;} // wenn gerade, dann kann man einfach -2 rechnen und man bekommt weiterhin eine ganzzahlige zahl!
else
{werte = aktuell_halb - 2.5;}// nötig um bei einer ungeraden zahl nicht auf double zu kommen, sondern auf int, wegen der zufallszahl, die ja nur int sein kann!!!
int abzug = abzugzufall.nextInt(werte);
abzug = abzug +1;}else{}
ich habe auch schon dran gedacht, einfach nru zu prüfen ob aktuell_staebchen gerade oder nicht ist, und wenn sie ungerade ist, dann einfach -1 zu rechnen und dann erst durch 2 zu teilen, aber das problem liegt woanders!
Wenn ich compilen will (ich benutze BlueJ -> von der schule aus vorgegeben), dann gibt er mir folgenden Fehler "possible loss of precision" in der zeile
Code:
werte = aktuell_halb -2
nun meine frage: wie kann ich das umgehen, bzw. so umschreiben dass es klappt...
Danke schon einmal für Eure Antworten!
Marc