Java 使用Arrays.sort,返回空数组
我正在使用Java 使用Arrays.sort,返回空数组,java,arrays,sorting,Java,Arrays,Sorting,我正在使用array.sort方法对我自己的可比较的对象的数组进行排序。在使用sort之前,数组已满,但在对数组进行排序并将其打印到系统后,将不会打印任何内容。编辑阵列根本不打印任何内容。不是空行,什么都没有 下面是我使用排序的方法的代码: public LinkedQueue<Print> arraySort(LinkedQueue<Print> queue1) { Print[] thing = new Print[queue1.size()]; Li
array.sort
方法对我自己的可比较的对象的数组进行排序。在使用sort之前,数组已满,但在对数组进行排序并将其打印到系统后,将不会打印任何内容。编辑阵列根本不打印任何内容。不是空行,什么都没有
下面是我使用排序的方法的代码:
public LinkedQueue<Print> arraySort(LinkedQueue<Print> queue1)
{
Print[] thing = new Print[queue1.size()];
LinkedQueue<Print> newQueue = new LinkedQueue<Print>();
for(int i = 0; i <queue1.size(); i++)
{
Print ob = queue1.dequeue();
thing[i] = ob;
System.out.println(thing[i]); //printing works here
}
Arrays.sort(thing);
for(int j = 0;j<thing.length-1;j++)
{
System.out.println(thing[j]); //printing does not work here
newQueue.enqueue(thing[j]);
}
return newQueue;
}
上次的for
循环不会打印数组中的最后一个元素。如果数组只有一个元素,那么它根本不会打印任何内容。改为:
for (int j = 0; j < thing.length; j++) //clean code uses spaces liberally :)
{
System.out.println(thing[j]);
newQueue.enqueue(thing[j]);
}
我希望问题在于代码的这一部分
for(int i = 0; i <queue1.size(); i++)
{
Print ob = queue1.dequeue();
thing[i] = ob;
System.out.println(thing[i]); //printing works here
}
为什么不打印最后一个元素for(int j=0;jAlso,“打印在这里不起作用”到底意味着什么?打印的是什么?值错误吗?您可以使用数组.toString(thing)
打印,因为您在print
类中重写了toString
。并告诉我们输出的确切内容。@Jonsket“在我对数组进行排序并将其打印到系统后,没有任何内容被打印出来。”此外,您可以用一个来替换compareTo()
实现,返回this.numPages-other.numPages;
谁说LinkedQueue
有一个.isEmpty()
method?LinkedQueue到底是什么?据我所知,Java中没有标准的LinkedQueue实现,InterWeb中有很多不同的自定义实现,尤其是在大学网站上。@ADTC我想是一个使用LinkedList实现的非标准队列。如果是这样的话,当然可以d扩展实现以包含isEmpty方法。@NullUserException:对不起,我误解了。您能告诉我如何确保队列1的所有元素都被插入到对象中吗?“干净的代码大量使用空格。”“这确实是个人偏好的问题。我认为int j=0
很难看。谢谢!这就是问题所在。@bitva感谢接受。很高兴知道我的答案对你有帮助。请看一下imran的答案。如果queue1
可以通过dequeue()
方法更改,则size()返回的值
在循环迭代过程中可能会发生更改,从而导致不需要的结果(不会迭代队列中的所有对象)。您可以通过将原始大小存储在变量中并将其用于循环,或者在LinkedQueue实现中创建一个isEmpty方法来解决此问题。@bitva:那么您只使用了一个元素数组吗?如果从。。。
for (Print p : thing)
{
System.out.println(p);
newQueue.enqueue(p);
}
for(int i = 0; i <queue1.size(); i++)
{
Print ob = queue1.dequeue();
thing[i] = ob;
System.out.println(thing[i]); //printing works here
}
for(int i = 0; !queue1.isEmpty() ; i++)
{
Print ob = queue1.dequeue();
thing[i] = ob;
System.out.println(thing[i]); //printing works here
}