ok here's the layout, it's about as lame as the rest of these problems:
A beautiful princess is to select a husband from n suitors. The suitors are assigned consecutive numbers 0,…, n – 1 and seated at a round table. A random sequence of n – 1 numbers x0, x1,…,xn-2, all of them in the range 0,…, n – 1 is selected. The princess starts with suitor 0, and moving in a clockwise direction, she counts off x0 positions and eliminates the suitor at that position. From there, she counts off another x1 positions and eliminates the suitor at that position. She continues doing this until one lucky guy is left: she marries him and they live happily ever after.
Assume that the princess’ position is next to a suitor’s chair. As an example, assume the suitors are named A, B, C, and D, with A being numbered 0 and D being numbered 3. Let the random sequence be 0, 2, and 1. Then the suitors will be eliminated in the order A, D, and C, and the lucky suitor will be B.
Write a class that uses a circular linked list to help the princess make her decision. The constructor for the class will be passed the number n of suitors, followed by a list of n suitors’ names, followed by a list of n – 1 numbers used to “rotate” among the suitors. The current position of the “princess” starts at the beginning of the linked list. The class should have a method rotate(int x) that counts off x steps in the “clockwise” direction beginning at the current position.
The class should have a method getEliminated() that returns a list, in order of elimination, of the names of the suitors already eliminated. The class should also have a method getHopeful() that returns a list of suitors not yet eliminated.
Write a test program that obtains the input n and a list of n suitors’ names from the user. The test program should generate the list of random n – 1 numbers to be used as the “rotate steps”. Using the class you have written, the test program prints the names of the rejected suitors (in order of rejection), and then prints the name of the lucky guy.
The java.util.* package contains a class Random (check the API). Objects of this class can use its method nextInt(int n) to get a random number (returned as an int) within the range 0 to n. Experiment with the Random class to see if it can help.
Any help would be appreciated as I am in over my head here (got sick for a couple months at the beginning of the semester). Here's what I have so far:
import java.util.*;
public class selectSuitor
{
/////Fields/////
private char Suitor;
private int n;
/////Constructors/////
public selectSuitor(LinkedList<Suitor>, char Suitor, int n)
{
this.Suitor = suitorName;
this.n = suitorNum;
LinkedList<Suitor> = new LinkedList; //Calls up new Linked List for Suitors
}//End selectSuitor Default Constructor
/////Methods/////
rotate(int x)
{
}
getEliminated()
{
}
getHopeful()
{
}
}
import java.util.*;
public class suitorTest
{
public static void main(String [] args)
{
Random ranNum = new Random(); // now you have an object
int aNum; // need a place to temporarily store the random numbers
aNum = ranNum.nextInt(n); // will get a random number between 0 and n
}
}
any help is appreciated
