我正在尝试编写一个包含十个名字的数组的程序。我要求使用扫描仪输入名称,我希望为这十个名称分配一个随机的阵列位置。
这是我的代码到目前为止,但我几乎被卡住了。
import java.util.Scanner
class RandomArray {
public static void main(String[] args) {
String [] NamesArray = new String[10]
Scanner sc = new Scanner(System.in){
System.out.println("Input first name: ");
}
}
我是一个完全的初学者。感谢
答案 0 :(得分:1)
您可以尝试使用列表而不是数组来存储名称。这将允许您按顺序添加它们并稍后将其随机播放。
首先,您要创建一个ArrayList
来存储名称:
ArrayList<String> list=new ArrayList<String>();
然后得到名字。我会建议一个循环来节省大量的打字。然后,在输入每个名称时,将其添加到列表中(替换&#34;名称&#34;使用您要添加的名称):
list.add(name);
然后你可以洗牌:
Collections.shuffle(list);
然后遍历列表并打印它们(或者你想用它们做什么)。您也可以将列表转换为数组:
list.toArray(new String[list.size()]);
答案 1 :(得分:0)
您可以使用两种总体策略。
我会选择第一个:它似乎更容易一些。
有关如何有效地改组数组的详细信息可以找到in this question。
顺便说一句,如果你不需要它是一个数组,你可以使用ArrayList<String>
,这样你就可以使用标准的Java方法来混淆它:Collections.shuffle()
方法
答案 2 :(得分:0)
你可以使用它有一个shuffle方法的类集合:
String [] namesArray = new String[10];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < namesArray.length; i++) {
System.out.print("Input name: ");
namesArray[i] = sc.next();
}
System.out.println("Input: " + Arrays.toString(namesArray));
Collections.shuffle(Arrays.asList(namesArray));
System.out.println("Input shuffled (random): " + Arrays.toString(namesArray));
答案 3 :(得分:0)
在chiastic-security评论的帮助下,我为你编写了代码。作为初学者,我会发现很难理解。
// Method 1. Put the names into the array in the order they're entered, and then shuffle them afterwards.
String[] NamesArray = new String[10];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < NamesArray.length; i++) {
System.out.print("Enter name No. " + (i + 1) + ": ");
String name = sc.next();
NamesArray[i] = name;
}
swapShuffle(NamesArray);
for (String name : NamesArray) {
System.out.println(name);
}
或者,
// Method 2. Start by generating an array of integers from 0 to 9, and shuffle these integers; then use this array to determine where to place each name as it comes in.
Integer[] nameOrder = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
swapShuffle(nameOrder);
String[] NamesArray = new String[10];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < NamesArray.length; i++) {
System.out.print("Enter name No. " + (i + 1) + ": ");
String name = sc.next();
NamesArray[nameOrder[i]] = name;
}
其中两种方法都使用这种静态方法进行混洗:
public static void swapShuffle(Object[] objects) {
Random r = new Random();
for (int i = 0; i < objects.length; i++) {
int n = r.nextInt(objects.length);
Object o = objects[i];
objects[i] = objects[n];
objects[n] = o;
}
}