*
The moose likes Java Micro Edition and the fly likes How would you shuffle and array in J2ME ? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Mobile » Java Micro Edition
Bookmark "How would you shuffle and array in J2ME ?" Watch "How would you shuffle and array in J2ME ?" New topic
Author

How would you shuffle and array in J2ME ?

Iliyan Ivanov
Greenhorn

Joined: Jun 30, 2011
Posts: 8
Hi guys,
I want to create a method for shuffling array in J2ME. Can you suggest some ways?
Thank you
Walter Gabrielsen Iii
Ranch Hand

Joined: Apr 09, 2011
Posts: 158
Sure. You mean like randomize the order of the array?

To make random numbers you need:
java.util.Random
java.lang.Math
% (Modulo operator)


Create a Random object, which is your random number generator, and call its nextInt() method.

The Math.abs() method keeps your random numbers in the positive range.

The '%' (Modulo) will help you constrain the range of random numbers, such as to the length of an array.


Example:



You need the array length for random number generation. You need a way to copy values to a new temporary array so you don't mess with the original.

Also, Somehow keep track of which ones you've already moved so your application doesn't copy two or more values from the array or you loose some.

If you have an object array you can skip all the double checking. Just copy your array into the method argument, then into the Vector using its copyInto(Object[] anArray) method, then keep calling, size() (for the Modulo), and elementAt(int index) (to move this object into the temp. array), and removeElementAt(int index) to lower the size of the Vector.

Keep doing randoms to the Vector until its empty, then you know your Temp array is ready to replace the original.
Darryl Burke
Bartender

Joined: May 03, 2008
Posts: 4523
    
    5

Random#nextInt(int n) will return a number in the range 0..n (inclusive, exclusive) obviating the need for Math.abs and modulo.


luck, db
There are no new questions, but there may be new answers.
Matthew Brown
Bartender

Joined: Apr 06, 2010
Posts: 4240
    
    7

You can avoid the need for a temporary array. If you look at the documentation for Collections.shuffle(), it describes a simple algorithm for randomly shuffling in situ.

(Of course, if java.util.Collections is available in J2ME, and if you use a List instead of an array, you can just call the method direct and let it do the work for you).
Darryl Burke
Bartender

Joined: May 03, 2008
Posts: 4523
    
    5

No, the Collections API isn't part of Java ME.
Matthew Brown
Bartender

Joined: Apr 06, 2010
Posts: 4240
    
    7

Thanks - I guessed it probably wasn't. But the approach that method describes is a good one.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: How would you shuffle and array in J2ME ?
 
Similar Threads
Converting JPG to PNG (MIDP)
JAVA Shuffle array ?
How to read "long" in to byte table
How do i start on my J2ME
Images through HTTP.