【发布时间】:2019-04-20 05:29:02
【问题描述】:
我创建了一个二维数组列表,它有一个或多个固定行数和一个包含数字 1-4 的数组。我应该对数组进行洗牌,然后将该数组存储在数组列表中。但是,当我之后打印整个数组列表时,它不匹配,并且它出现了,它正在使用我的最后一次随机播放并为所有行打印它。
例如,我的输出之一是:
3、2、1、4
1、2、4、3
2、1、3、4
2、3、4、1
2、3、4、1
2、3、4、1
2、3、4、1
2、3、4、1
谁能帮我理解我的错误?
package practice;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Arrays;
import java.util.List;
public class Practice {
public static void main(String[] args) {
//Make arraylist for teams
List < Integer[] > teamMatches = new ArrayList < > ();
//Array for team numbers
Integer[] teamNums = new Integer[] {
1,
2,
3,
4
};
for (int i = 0; i < 4; i++) {
//shuffle array
Collections.shuffle(Arrays.asList(teamNums));
//add array to arraylist
teamMatches.add(teamNums);
//print out
System.out.println(teamMatches.get(i)[0] + ", " + teamMatches.get(i)[1] + ", " +
teamMatches.get(i)[2] + ", " + teamMatches.get(i)[3]);
}
System.out.println("_____________________________");
//print out entire match array
for (int n = 0; n < 4; n++) {
System.out.println(teamMatches.get(n)[0] + ", " + teamMatches.get(n)[1] + ", " +
teamMatches.get(n)[2] + ", " + teamMatches.get(n)[3]);
}
}
【问题讨论】:
-
你只是想打乱array的数组还是每个数组中的元素???预期的结果是什么?
-
我只想打乱 teamNums 数组。之后,我想将洗牌后的数组放入 teamMatches 数组列表中。我的预期结果是第一个循环打印出一个 4x4 数组,每行包含随机顺序的数字 1-4,没有重复。第二个循环只是用来检查洗牌后的数组是否被正确存储。如果两个打印的数组匹配,那么我知道我正在以正确的顺序存储我的洗牌数组
标签: java arrays multidimensional-array dynamic shuffle