есть ли способ выбрать случайную строку из массива и не выбирать строку снова. как только все строки выбраны только один раз, программа завершается.
вот моя текущая система, publi c stati c void main (String [] argv) {
//String [] names = new String[5];
String [] names = {"Snoopy", "Donald Duck", "Mickey Mouse", "Little Timmy", "Spiderman"};
//put a list of names in an array
//randomly pick a name out of the array
//how to: randomly pick a number as the index
//range: 0 to the number of names - 1
int n = -1;
int previous = n;
int storing1 = -1;
int storing2 = -1;
int storing3 = -1;
int storing4 = -1;
System.out.println(previous);
while (true) {
System.out.println("Hit \"enter\" to spin");
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
//if (s.equalsIgnoreCase("s")) {
storing4 = storing3;
storing3 = storing2;
storing2 = storing1;
storing1 = previous;
previous = n;
n = (int) (Math.random() * names.length);
if (n == previous || n == storing1 || n == storing2 || n == storing3 || n == storing4) {
System.out.println("This person has already been picked");
break;
}
System.out.print("n = " + n + " ");
String picked = names[n];
System.out.println("Congratulations, " + picked + " was picked!");
}
System.out.println(previous);
System.out.println(storing1);
System.out.println(storing2);
System.out.println(storing3);
System.out.println(storing4); //for my own use, to tell if the storing system works properly
}
моя проблема в том, что консоль будет возвращать «этот человек уже выбран» и так далее. Нельзя сказать, что система завершения программы не работает, так как перерыв сработает преждевременно.
[1]: https://i.stack.imgur.com/54Eef.png [как вы можете видеть, программа завершается, даже если не все пять имен были выбраны, потому что раньше было выбрано одно и то же] [1] извините если это кажется простым, я только начал java несколько месяцев go. Я не думаю, что мне разрешено использовать ArrayList, и это единственное решение, которое я нашел до сих пор. спасибо.