这是我想要做的,并且发生错误。希望有人可以指出这有什么问题。
将数组raw
({1,2,3,4})发送到SelectNo
类。
public class SelectTest {
public static void main(String[] args) {
int[] raw = new int[] { 1, 2, 3, 4 };
SelectNo select = new SelectNo(raw);
select.select();
}
}
SelectNo
类'select()
函数给出结果,包含来自raw
的三个数字的数组,而不重复。所以结果必须是{1,2,3},{1,2,4},{2,3,4}。我知道如何使用下面的代码打印出结果。
public class SelectNo {
public int[] selected;
public int[] raw;
public SelectNo(int[] raw) {
this.raw = raw;
this.selected = new int[3];
}
public void select() {
for (int i = 0; i < raw.length - 2; i++) {
for (int j = i + 1; j < raw.length - 1; j++) {
for (int k = j + 1; k < raw.length; k++) {
selected[0] = raw[i];
selected[1] = raw[j];
selected[2] = raw[k];
System.out.println(selected[0]+" "+selected[1]+" "+selected[2]);
}
}
}
}
SelectTest
以返回二维数组'addSelected'。我不确定select()
是否合乎逻辑,因为我收到了错误。
select()
答案 0 :(得分:0)
正如我在评论中所说,问题是selected
是对数组的引用,这意味着它指向存储数组内容的内存段。基本上你是在做一个浅拷贝,而不是你的数组的深拷贝。要更正此问题,您可以执行以下操作,而不是addSelected[no] = selected;
:
for
循环插入selected
内addSelected[no]
数组中的每个元素。Arrays.copyOf()
。