gpt4 book ai didi

java - 整数数组列表已更改java

转载 作者:行者123 更新时间:2023-11-29 03:00:47 27 4
gpt4 key购买 nike

我正在使用整数数组列表(这是一个类变量)来保存答案。整数数组在方法中添加到列表中,结果很好(有 1s)。但是当我在main方法中fetch的时候,里面的值全是0!不明白,list改在哪里了?

public class test {
private static int sum=0;
static ArrayList<Integer[]> res = new ArrayList<Integer[]>();
private static double max=0;

public static void main(String[] args) {
int n = 6;
double B = 23.6;
double[] menu = { 1.2, 2, 2.5, 3.5, 3.2, 6.2, 7.8, 4.0, 5.6, 10, 6.5 };
Integer[] solution = new Integer[menu.length];
combinate(menu, 0, n,0, res, solution);
for(int i=0;i<res.size();i++) {
//not getting the element!!!!!!!!!!!!
//Integer[] sol = res.get(i);
System.out.println(i+" "+res.get(i));
System.out.println("Arraylist contains:"+Arrays.toString( res.get( i ) ) );

double sums = 0.0;
for (int j = 0; j < res.get(i).length; j++) {
if(res.get(i)[j]!=null)
sums += menu[j] * res.get(i)[j];
}
if (max < sums && sums < B) {
max = sums;
}
}
System.out.println(max + " max");
}

public static void combinate(double[] left, int n, int k,int sum,
ArrayList<Integer[]> res, Integer[] holder) {
if (n == left.length) {
if (sum == k) {
res.add(holder);
System.out.println(res.size()+" "+Arrays.toString(res.get(res.size()-1)));
}
sum = 0;
return;
}
{
holder[n] = 1;
sum++;
combinate(left, n + 1, k, sum,res, holder);
holder[n] = 0;
sum--;
combinate(left, n + 1, k, sum,res, holder);
}
}

}

答案是这样的:在组合方法中打印时,列表元素看起来像 [1111100000]

而在main方法中,有所有[000000000000]

这里出了什么问题?

最佳答案

if (sum == k) 
{
res.add(holder.clone()); // take copy of holder at that moment
System.out.println(res.size()+" "+Arrays.toString(res.get(res.size()-1)));
}

会有所帮助。

[参见实验:http://rextester.com/DNNZ68674 ]

关于java - 整数数组列表已更改java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35115894/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com