Avatar billede dennish Nybegynder
21. september 2006 - 15:40 Der er 11 kommentarer og
1 løsning

loope random

Hej er det ikke muligt at loope random over et array

ChoiceModel[] choice ... // mit array



for (int j = 0; j < choice.length; j++)
{
// hen tilføjer jeg data til en fil. Pga. loopet tilføjer
    jeg til filen en ad gangen.(i rækkefølge) Vil gerne gøre det tilfældigt 
 
}


Er det muligt ? med f.eks Random Generator
Avatar billede dennish Nybegynder
21. september 2006 - 17:15 #1
Har lavet følgende kode

package test;

import java.util.Random;

/**
*
*/
public class RandomArray {

    private Random randomGenerator = new Random();
   
    /**
    * @param args
    */
    public static void main(String[] args)
    {
        new RandomArray().start();
    }
   
    public void start(){
        int[]intArray ={0,1,2,3};
        intArray = randomGenerator(intArray);
        for(int i = 0;i< intArray.length;i++)
        {
            System.out.println(intArray[i]);
        }
    }
   
    /**
    * @param choice
    * @return
    */
    public int[] randomGenerator(int[] choice){
       
        //int itemsSize = choice.length; // 4 (0 1 2 3 )
       
        int tmp[] = new int[choice.length];
        for(int i = 0; i <choice.length;i++){
            int index = randomGenerator.nextInt(choice.length);
            tmp[index] = choice[i];
        }
       
        return tmp;
    }
}


Den funger nogenlunde. Men problemet pt. er at jeg skal blande mit array men pt. kan min randomGenerator returnere ens værdier hvilke den ikke må :-( nogle foreslag  ?
Avatar billede mikkelbm Nybegynder
21. september 2006 - 17:18 #2
Lidt nemmere:

// Dine værdier
String[] values = new String[]{"a", "b", "c", "d"};
       
// Konvertér til en List
List<String> list = Arrays.asList(values);
// Collections har en shuffle-metode der blander indholdet
Collections.shuffle(list);
       
// Udskriv / skriv til fil:
for (String value : values)
    System.out.println (value);
Avatar billede dennish Nybegynder
21. september 2006 - 17:21 #3
mikkelbm>> får jeg så ikke ens værdier ?
Avatar billede mikkelbm Nybegynder
21. september 2006 - 17:25 #4
Ens værdier?
Avatar billede dennish Nybegynder
21. september 2006 - 17:28 #5
når jeg kører mit eksempel ( 0 1 2 3 ) kan jeg godt få returneret 0 0 1 2, hvilke ikke er hensigtsmæssigt
Avatar billede mikkelbm Nybegynder
21. september 2006 - 17:29 #6
Det får du ikke ved mit eksempel. Den blander bare de værdier der allerede er i listen.
Avatar billede dennish Nybegynder
21. september 2006 - 17:30 #7
:-) så lige et tillægsspørgsmål, hvad er det nu lige <String>. Det er da vist nyt i jdk 1.5 ?
Avatar billede mikkelbm Nybegynder
21. september 2006 - 17:34 #8
Det er generics. Og ja, det er nyt fra Java 1.5.

Det betyder at du kan type-sikre dine collections.

F.eks.:

java 1.5 +
ArrayList<String> values = new ArrayList<String>();
// tilføj værdier

// Her behøver du ikke caste til String
String value = values.get (2);


java >= 1.4
ArrayList values = new ArrayList();
// tilføj værdier

// Her skal du caste:
String value = (String)values.get (2);


Og så har det nogle flere fordele, som du selv kan læse om.
Avatar billede mikkelbm Nybegynder
21. september 2006 - 17:45 #9
Prøv at granske nedenstående metode:

public static <T> T[] ShuffleArray(T[] values)
{
    List<T> list = Arrays.asList(values);
    Collections.shuffle(list);
    return (T[])list.toArray ();
}


Den kan tage en hvilken som helst type array og "shuffle" det. Og du behøver ikke caste værdier frem og tilbage.
Avatar billede dennish Nybegynder
21. september 2006 - 17:52 #10
mikkel>> fantastisk. Så bliver jeg lige nødt til at snakke med chefen chefen i morgen om jeg må bruge generics :-)
Avatar billede dennish Nybegynder
21. september 2006 - 17:53 #11
smider du ikke lige et svar
Avatar billede mikkelbm Nybegynder
21. september 2006 - 18:28 #12
Kommer her...
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