ArrayList 在 java 中出现问题。 x+y+z+w = 13 的正整数解
ArrayList giving problems in java. positive integers solution to x+y+z+w = 13
所以我正在创建一种方法,它基本上给出了问题 x+y+z+w = 13 的所有可能的正整数解决方案。实际上,我设计了一个程序,可以使用任何数字获得所有可能的正整数解决方案任意数量的变量。我已经设法使用这种方法获得了解决方案:
public class Choose {
public static ArrayList<int[]> values;
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] loops = new int[3];
int q = 0;
values = new ArrayList<int[]>();
int[] array = new int[4];
System.out.println(choose(12,3));
NestedLoops(3,10,0,loops,13,array, 0);
for(int i = 0; i < values.size(); i++){
printArray(values.get(i));
}
}
public static void NestedLoops(int n, int k, int j,
int[] loops, int q, int[] array, int g){
if(j==n){
for(int i = 0; i< n; i++){
q-=loops[i];
}
if(q>0){
for(int i = 0; i < n; i++){
array[i] = loops[i];
}
array[n] = q;
values.add(array);
}
return;
}
for(int count = 1; count <= k; count++){
loops[j] = count;
NestedLoops(n,k,j+1,loops, 13, array, g);
}
}
}
我的问题是,当我打印 ArrayList 时,我得到的只是最后一次重复的值。当我尝试只打印出值而不是将它们存储在 ArrayList 中时,它工作得很好。这让我认为问题出在 values.add(array);线,但我不知道如何解决它或我做错了什么。感谢您提供的任何帮助。
尝试使用:
values.add(array.clone());
同一数组的每次添加都指向该数组对象。当您不断更改同一个对象时,最终状态就是所有存储元素所显示的状态。打印工作正常,因为它只是在特定时刻转储阵列的状态。
所以我正在创建一种方法,它基本上给出了问题 x+y+z+w = 13 的所有可能的正整数解决方案。实际上,我设计了一个程序,可以使用任何数字获得所有可能的正整数解决方案任意数量的变量。我已经设法使用这种方法获得了解决方案:
public class Choose {
public static ArrayList<int[]> values;
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] loops = new int[3];
int q = 0;
values = new ArrayList<int[]>();
int[] array = new int[4];
System.out.println(choose(12,3));
NestedLoops(3,10,0,loops,13,array, 0);
for(int i = 0; i < values.size(); i++){
printArray(values.get(i));
}
}
public static void NestedLoops(int n, int k, int j,
int[] loops, int q, int[] array, int g){
if(j==n){
for(int i = 0; i< n; i++){
q-=loops[i];
}
if(q>0){
for(int i = 0; i < n; i++){
array[i] = loops[i];
}
array[n] = q;
values.add(array);
}
return;
}
for(int count = 1; count <= k; count++){
loops[j] = count;
NestedLoops(n,k,j+1,loops, 13, array, g);
}
}
}
我的问题是,当我打印 ArrayList 时,我得到的只是最后一次重复的值。当我尝试只打印出值而不是将它们存储在 ArrayList 中时,它工作得很好。这让我认为问题出在 values.add(array);线,但我不知道如何解决它或我做错了什么。感谢您提供的任何帮助。
尝试使用:
values.add(array.clone());
同一数组的每次添加都指向该数组对象。当您不断更改同一个对象时,最终状态就是所有存储元素所显示的状态。打印工作正常,因为它只是在特定时刻转储阵列的状态。