Avatar billede noerdar-dilling Nybegynder
26. november 2004 - 12:23 Der er 14 kommentarer og
1 løsning

Problemer med Random funktion

package test;

import java.util.Random;
import java.util.*;

public class ramdomShop    {

   
Vector nr = new Vector();
   
int randomNr=(int)(Math.random()*2000000);   

nr.add(randomNr);
   
}

Den siger

--------------------Configuration: bogsoeg - JDK version 1.5.0 <Default> - <Default>--------------------
C:\Program Files\Xinox Software\JCreatorV3 LE\MyProjects\bogsoeg\src\mypackage\shopping\ramdomShop.java:13: <identifier> expected
nr.add(randomNr);
      ^
1 error

Process completed.
Avatar billede noerdar-dilling Nybegynder
26. november 2004 - 12:24 #1
Den skal lave et tal mellem 1 og 2 millioner (2000000).
Avatar billede minijensen1 Nybegynder
26. november 2004 - 12:29 #2
Som du selv antyder i din import, så ligger Random i util klassen - og ikke i Math klassen, hvor du prøver at bruge den.

Prøv med følgende:

Random rand = new Random();
int randomNr = rand.nextInt(2000000) + 1;
Avatar billede rasmusbg Nybegynder
26. november 2004 - 12:30 #3
Well...jeg kan se, du bruger jdk1.5. Må sige, jeg ikke har så godt styr på de nye features i den, så jeg vil lige komme med en løsning, der virker i den go'e gamle jdk1.4 :)

int randomNr = (int)(2000000 - Math.random()*1000000);

nr.add(new Integer(randomNr));
Avatar billede noerdar-dilling Nybegynder
26. november 2004 - 12:36 #4
Den kommer med samme fejl
Avatar billede rolchau Nybegynder
26. november 2004 - 12:37 #5
Først så brug rasmusbg's løsning med new Integer for at lave din int til et object, og så benyt nr.add() inde i en metode istedet for i det yderste scope af klassen.
Avatar billede noerdar-dilling Nybegynder
26. november 2004 - 12:42 #6
Fatter jeg ikke noget af, ka ngodt være jeg er tungnem, men skal jeg lave en metode der f.eks. hedder

nt randomNr = (int)(2000000 - Math.random()*1000000);

public getRandom {
nr.add(new Integer(randomNr));
}
Avatar billede rasmusbg Nybegynder
26. november 2004 - 12:43 #7
Du skal lige ha' en void som returtype på din metode, så signaturen ser ud på denne måde:

public void getRandom()
Avatar billede noerdar-dilling Nybegynder
26. november 2004 - 12:45 #8
package test;

import java.util.*;
import java.io.*;

public class randomNr    {

   
Vector nr = new Vector();
   


int randomNr = (int)(2000000 - Math.random()*1000000);

public getInsertNummer {
nr.add(new Integer(randomNr));
}


   
}
Avatar billede noerdar-dilling Nybegynder
26. november 2004 - 12:49 #9
ok nu virker denne kode, problemet er at nummeret bliver jo ikke tilføjet til arrayet uden man kalder metoden og det kan man jo ikke når det er en bean der indeholder en vectoren med tallet.
Avatar billede noerdar-dilling Nybegynder
26. november 2004 - 12:49 #10
package test;

import java.util.*;
import java.io.*;

public class randomNr    {

   
Vector nr = new Vector();
   
int randomNr = (int)(2000000 - Math.random()*1000000);


public void Insert() {   
nr.add(new Integer(randomNr));

}


   
}
Avatar billede rasmusbg Nybegynder
26. november 2004 - 12:51 #11
Er det fordi, det tilfældige tal skal tilføjes, når bean'en bliver oprettet?
Avatar billede rasmusbg Nybegynder
26. november 2004 - 12:59 #12
Du skal forresten husk, at en klasse skal indeholde en parameterløs constructor og get/set-metoder (som minimum), for at de er beans. Jeg har nedenfor skrevet, hvordan din klasse vil skulle se ud, og når der bliver skabt et objekt udfra den (vha. "new randomNr()"), så vil der også blive lagt et tilfældigt tal mellem 1 og 2 mio i Vector'en nr.

package test;

import java.util.*;
import java.io.*;

public class randomNr    {

private Vector nr;
private int randomNr;

  public randomNr() {
    nr = new Vector();
    randomNr = (int)(2000000 - Math.random()*1000000);
    nr.add(new Integer(randomNr));
  }

  public Vector getNr() {
    return nr;
  }

  public void setNr(Vector nr) {
    this.nr = nr;
  }

  public int getRandomNr() {
    return randomNr;
  }

  public void setRandomNr(int randomNr) {
    this.randomNr = randomNr;
  }

}
Avatar billede arne_v Ekspert
26. november 2004 - 22:39 #13
Umiddelbart synes jeg at noget som nedenstående giver mere mening:

import java.util.Vector;

public class RandomNumbers {
    private final static int DEFAULT_SIZE = 100;
    private Vector numbers;
    public RandomNumbers() {
        this(DEFAULT_SIZE);
    }
    public RandomNumbers(int n) {
        for(int i = 0; i < n; i++) {
            numbers.add(new Integer((int)(2000000 - Math.random()*1000000)));
        }
    }
    public Vector getNumbers() {
        return numbers;
    }
}
Avatar billede arne_v Ekspert
12. december 2004 - 19:40 #14
kommet videre ?
Avatar billede noerdar-dilling Nybegynder
13. december 2004 - 17:48 #15
Har ornet det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester