【发布时间】:2017-03-16 09:23:21
【问题描述】:
所以我正在编写这段代码,其中用户将一个 int 数组 x 输入到方法 xify(x) 中。然后应该返回每个元素的数量。所以,如果x 是数组[4, 2, 3],我们应该返回有头列表:4 4 4 4 2 2 3 3 3。
但是,我的方法似乎只返回一个空列表。我似乎无法追踪问题所在。下面我提供了我的 xify() 方法,以及一个名为 add 的辅助方法,它将节点添加到列表中。
public static Node<Integer> xify(int[] x){
Node<Integer> result = new Node<>(null, null);
int counter=0;
int length=x.length;
while(counter<length){ //loop through the array
while(x[counter]!=0){ //take each element, add it to the list * int of the elem
add(result,x[counter]);
x[counter]=x[counter]-1;}
counter++;
}
return result;
}
辅助方法:
public static<T> void add(Node<T> list, T element){
while(list.getNext()!=null){
list=list.getNext();
}
list.setNext(new Node<>(element, null));
}
我的算法有什么问题?
P.S 您可能已经看到,它使用的是泛型,因为这是我目前正在学习的。
我怎么称呼它:
System.out.println(xify(array));
System.out.println(toString(xify(array)));
【问题讨论】:
-
我希望你的问题是
add(result,x[counter]);因为 java 不是pass-by-referenced所以如果你在add函数中添加元素它不会影响你的result变量。 -
@pooyan 是的,它会的。
result将被变异 -
@pooyan 是的,我的朋友,add 功能工作正常,我已经在使用它,它完成了它应该做的事情。我只需要关于我假设的 xify 算法的帮助
-
@MSK 但你说你的问题是`看来我的方法只返回一个空列表`而不是算法。
-
显示调用
xify的代码。我怀疑您有一个用于结果的字段,但您没有分配调用返回的内容,因此它保持为空。