I get the question about choosing a random word from user input using Knuth's shuffling algorithm, but the problem is I have the constraint of using some specific libraries.
(here is the link for more details - my part is to form the random word java file) https://coursera.cs.princeton.edu/algs4/assignments/hello/specification.php
My main problem is, my program accepts the user's input in form of a string list and uses the while-loop to add more detail, but to apply the algorithm I must convert the list into arrays; however, the program doesn't get my data and it always returns an empty array. What should I do, thanks in advance!
Here is my code:
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
public class RandomWord {
public static void main(String[] args) throws IOException {
StdOut.println("enter your words"); // StdIn.hasNextChar() = !StdIn.isEmpty()
ArrayList<String> mylist = new ArrayList<String>();
String store = new String();
int count = 1;
String[] arr = new String[mylist.size()];
int k = 0;
store = StdIn.readString();
mylist.add(store);
if (StdIn.hasNextChar() == false || mylist.contains(null)) {
StdOut.println("you enter nothing");
}
else {
while (count == mylist.size()) {
while (StdIn.hasNextChar() == true) {
store = StdIn.readString();
mylist.add(store);
count++;
mylist.toArray(arr);
System.out.println(Arrays.toString(arr));
}
}
}
}
}
Here is my test result:
enter your words
hi ho // my input from the terminal
[] // the result: an empty array - not what I want
Notice: If I use System.out.println(mylist)
it still prints for me the ArrayList
full of input ( [ hi, ho]
) but I think that is the list - not the array, in case if I can shuffle the list entries, can anyone show me how to do that in the simplest ways with Knuth's algorithm!
I try to add more specific constraints, such as the while-loop may end when the list size == the number of words the user adds into the program, but It doesn't work as I think
I expect the data can convert from strings -> a String[] but don't have to go through the list conversion
Your problem is folowing line
The
toArray
method return the filled array. the parameter is only for init of the new array.Try the follwowing