/ 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
ArrayList
Fra : Henrik Kirk


Dato : 19-09-03 19:12

Hey
Har ikke programmeret saa meget i Jave foer nu, er der en metode til at
faa et tilfaeldigt object fra en ArrayList, for jeg faa hele tiden
NullPointerEx. paa denne her:
Item i = (Item) items.toArray()[(int) (Math.random()*items.size() + 1)];


 
 
Bertel Lund Hansen (19-09-2003)
Kommentar
Fra : Bertel Lund Hansen


Dato : 19-09-03 17:52

Henrik Kirk skrev:

>Har ikke programmeret saa meget i Jave foer nu, er der en metode til at
>faa et tilfaeldigt object fra en ArrayList, for jeg faa hele tiden
>NullPointerEx. paa denne her:
>Item i = (Item) items.toArray()[(int) (Math.random()*items.size() + 1)];

ArrayList - Ctrl-F1 - bladre ...

Object   get(int index)
   Returns the element at the specified position
   in this list.

Hvis dit objekt hedder adresser, kan du altså skrive:

   adr=adresser.get(42);

men det giver 'kun' et objekt. Som regel har man brug for at
caste:

   String adr;
   adr=(String) adresser.get(42);

(hvis det er Strings der er gemt i listen).

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Jesper Matthiesen (22-09-2003)
Kommentar
Fra : Jesper Matthiesen


Dato : 22-09-03 09:56

1)
size() returnerer heltallet 20 hvis der er 20 elementer i din liste. Dvs.
muligvis (20*1,0)+1 = 21. Men arr[19] vil i dette tilfælde være det højest
mulige index du kan referere til. Dit udtryk skal være
((int)(Math.random()*items.size()-1))
2) jvf. sidst indlæg: ikke toArray(), det bliver hundedyrt... brug blot:
items.get(int index)

:) -Jesper

"Henrik Kirk" <henrik@mediabits.org> wrote in message
news:3F6B4701.1040907@mediabits.org...
> Hey
> Har ikke programmeret saa meget i Jave foer nu, er der en metode til at
> faa et tilfaeldigt object fra en ArrayList, for jeg faa hele tiden
> NullPointerEx. paa denne her:
> Item i = (Item) items.toArray()[(int) (Math.random()*items.size() + 1)];
>



Lars M (23-09-2003)
Kommentar
Fra : Lars M


Dato : 23-09-03 18:04


"Jesper Matthiesen" <matthiesenjesper@hotmail.com> wrote in message
news:bkmd98$n35$1@sunsite.dk...
> 1)
> size() returnerer heltallet 20 hvis der er 20 elementer i din liste. Dvs.
> muligvis (20*1,0)+1 = 21. Men arr[19] vil i dette tilfælde være det højest
> mulige index du kan referere til. Dit udtryk skal være
> ((int)(Math.random()*items.size()-1))
>
Hvad så hvis random returnerer 0?

Udtrykket skal være:
((int)(Math.random()*(items.size()-1)))

Mvh
Lars




Jesper Matthiesen (23-09-2003)
Kommentar
Fra : Jesper Matthiesen


Dato : 23-09-03 21:12

do! ... enig :)

"Lars M" <lamosfjern@dettepost8.tele.dk> wrote in message
news:3f707cde$0$83051$edfadb0f@dtext01.news.tele.dk...
>
> "Jesper Matthiesen" <matthiesenjesper@hotmail.com> wrote in message
> news:bkmd98$n35$1@sunsite.dk...
> > 1)
> > size() returnerer heltallet 20 hvis der er 20 elementer i din liste.
Dvs.
> > muligvis (20*1,0)+1 = 21. Men arr[19] vil i dette tilfælde være det
højest
> > mulige index du kan referere til. Dit udtryk skal være
> > ((int)(Math.random()*items.size()-1))
> >
> Hvad så hvis random returnerer 0?
>
> Udtrykket skal være:
> ((int)(Math.random()*(items.size()-1)))
>
> Mvh
> Lars
>
>
>



Bertel Lund Hansen (23-09-2003)
Kommentar
Fra : Bertel Lund Hansen


Dato : 23-09-03 21:27

Lars M skrev:

>Udtrykket skal være:
>((int)(Math.random()*(items.size()-1)))

Nej. Random() returnerer et tal i intervallet [0,1[ så der skal
ikke trækkes 1 fra.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Lars M (24-09-2003)
Kommentar
Fra : Lars M


Dato : 24-09-03 18:35


"Bertel Lund Hansen" <nospamius@lundhansen.dk> wrote in message
news:91b1nvs3c2k9js3u8h7ok5vvmg66ealcit@news.stofanet.dk...
> Lars M skrev:
>
> >Udtrykket skal være:
> >((int)(Math.random()*(items.size()-1)))
>
> Nej. Random() returnerer et tal i intervallet [0,1[ så der skal
> ikke trækkes 1 fra.
>
Tja man skal huske at læse sin javadoc - sorry.
(min kode ville dog ikke fremprovokere exceptions, men det er jo synd ikke
at bruge alle elementerne i "items"


Mvh
Lars



Robert Larsen (24-09-2003)
Kommentar
Fra : Robert Larsen


Dato : 24-09-03 21:18

Lars M wrote:
>>>Udtrykket skal være:
>>>((int)(Math.random()*(items.size()-1)))
>>
>>Nej. Random() returnerer et tal i intervallet [0,1[ så der skal
>>ikke trækkes 1 fra.
>>
>
> Tja man skal huske at læse sin javadoc - sorry.
> (min kode ville dog ikke fremprovokere exceptions, men det er jo synd ikke
> at bruge alle elementerne i "items"
>

Det kan nu godt give exceptions. Hvis items er tom indexerer du ind i et
tomt array og det kan give problemer.


Lars M (25-09-2003)
Kommentar
Fra : Lars M


Dato : 25-09-03 16:28


"Robert Larsen" <Xrobert@the-playground.dk> wrote in message
news:3F71FC04.7090300@the-playground.dk...
> >
>
> Det kan nu godt give exceptions. Hvis items er tom indexerer du ind i et
> tomt array og det kan give problemer.
>
Ja ja, og hvis items er null, eller der ikke er mere hukommelse tilbage,
eller....

Mvh
Lars



Robert Larsen (23-09-2003)
Kommentar
Fra : Robert Larsen


Dato : 23-09-03 21:54

Lars M wrote:

>
> Hvad så hvis random returnerer 0?
>
> Udtrykket skal være:
> ((int)(Math.random()*(items.size()-1)))
>
Faktisk skal det bare være:


(int)(Math.random()*items.size())


Lasse Westh-Nielsen (24-09-2003)
Kommentar
Fra : Lasse Westh-Nielsen


Dato : 24-09-03 00:06

"Henrik Kirk" <henrik@mediabits.org> wrote

> ... er der en metode til at
> faa et tilfaeldigt object fra en ArrayList, for jeg faa hele tiden
> NullPointerEx. paa denne her:
> Item i = (Item) items.toArray()[(int) (Math.random()*items.size() + 1)];

Brug nextInt-metoden på Random-klassen :

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Random.html#nextInt(int)

Så kan du trække et tal mellem 0 og items.size() uden at skulle regne med
flydende komma-tal osv.

Mvh Lasse


--
Lasse Westh-Nielsen
lasse@daimi.au.dk




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

Månedens bedste
Årets bedste
Sidste års bedste