/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Problemer med at få long til at blive int
Fra : rofe@mailme.dk


Dato : 24-10-02 14:28

Hej NG

Jeg kan simpelthen ikke se hvorfor dette ikke vil virke.

Er der nogle der kan fortælle mig hvorfor ?

public class Nim
{
private int computerIntelligence; /* 0 stupid, 1 smart */

public Nim()
{

/* is the computer smart or stupid */
long i = Math.round(Math.random());
computerIntelligence = Long.intValue(i);

}
}

Jeg skal lave et random number, runde det af til 0 eller 1 og konvertere det
til en int.


Håber nogle kan hjælpe


m v h
Ronni
rofe@mailme.dk




 
 
Rico Wind (24-10-2002)
Kommentar
Fra : Rico Wind


Dato : 24-10-02 16:04

rofe@mailme.dk wrote

>
> long i = Math.round(Math.random());
> computerIntelligence = Long.intValue(i);

Prøv blot og caste den med.
int computerIntelligence = (int)i;


/Rico


Hancater (24-10-2002)
Kommentar
Fra : Hancater


Dato : 24-10-02 16:04

> Er der nogle der kan fortælle mig hvorfor ?
>
> public class Nim
> {
> private int computerIntelligence; /* 0 stupid, 1 smart */
>
> public Nim()
> {
>
> /* is the computer smart or stupid */
> long i = Math.round(Math.random());
> computerIntelligence = Long.intValue(i);
>
> }
> }
>
> Jeg skal lave et random number, runde det af til 0 eller 1 og konvertere
det
> til en int.
>
>
> Håber nogle kan hjælpe
Ved ikke om det hjælper, men metoden intValue() returnerer værdien som en
int.
Prøv det.
-Ostekongen



Jimmi Wolff (24-10-2002)
Kommentar
Fra : Jimmi Wolff


Dato : 24-10-02 16:32

Jeg ville nok også bare carste til en int, sådan her:

(int)(Math.round(Math.random()));


<rofe@mailme.dk> skrev i en meddelelse news:ap8sg2$c8d$1@sunsite.dk...
> Hej NG
>
> Jeg kan simpelthen ikke se hvorfor dette ikke vil virke.
>
> Er der nogle der kan fortælle mig hvorfor ?
>
> public class Nim
> {
> private int computerIntelligence; /* 0 stupid, 1 smart */
>
> public Nim()
> {
>
> /* is the computer smart or stupid */
> long i = Math.round(Math.random());
> computerIntelligence = Long.intValue(i);
>
> }
> }
>
> Jeg skal lave et random number, runde det af til 0 eller 1 og konvertere
det
> til en int.
>
>
> Håber nogle kan hjælpe
>
>
> m v h
> Ronni
> rofe@mailme.dk
>
>
>



rofe@mailme.dk (24-10-2002)
Kommentar
Fra : rofe@mailme.dk


Dato : 24-10-02 18:47

Yeps takker for hjælpen.


Jeg tænkte i helt forkerte baner der :)

/Ronni



Filip Larsen (24-10-2002)
Kommentar
Fra : Filip Larsen


Dato : 24-10-02 19:40

<rofe@mailme.dk> skrev

> public class Nim
> {
> private int computerIntelligence; /* 0 stupid, 1 smart */
>
> public Nim()
> {
>
> /* is the computer smart or stupid */
> long i = Math.round(Math.random());
> computerIntelligence = Long.intValue(i);
>
> }
> }

Bemærk, at du med Java2 fx kan gøre det som

Random rng = new Random();
...
computerIntelligence = rng.nextInt(2);

eller, hvis du egentlig bare vil have et flag, noget i retning af:

boolean computerIsSmart = rng.nextBoolean();

Husk at genbruge "rng" hvis du skal lave tilfældige tal andre steder (dvs.
undgå have mange udtryk af typen "new Random().nextBoolean()").


Mvh,
--
Filip Larsen <filip.larsen@mail.dk>



Eva Davidsen (24-10-2002)
Kommentar
Fra : Eva Davidsen


Dato : 24-10-02 21:42

Hvis du bare skal bruge et random tal - 0 eller 1, hvorfor så overhovedet
bruge en long? Det er vel næsten som at skyde gråspurve med kanoner. long er
jo en 64 bit udgave af et heltal, hvor int er en 32 bit udgave. Og så vidt
jeg husker, så returnerer Math.random() en double - altså et decimal tal
skarpt mindre en 1 og større end eller lig med 0.

Så hvis du skriver
double d = Math.random();

vil 0<=d og d<1

Hvis du så i stedet skriver
double d = 2*Math.random();

vil 0<=d og d<2

Hvis du så bare typecaster d til en int - vil java tvinge d til at smide
decimalerne væk.
Så alle tal mellem 0 og 1 vil blive til 0
og alle tal mellem 1 og 2 vil blive til 1

Så dette vil give en int med enten 0 eller 1 med lige stor sandsynlighed:

int computerIntelligence = (int)2*Math.random();
// computerIntelligence vil nu enten være 0 eller 1



Mvh Henrik



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste