对于我的方法,分区,对于我的快速排序,当我运行它的时候是可以的。但是,每当我上传到项目提交页面时,测试都会返回该代码设计的负面结果。就像
static long partition(DataArray array, long l, long r, Record pivot)
throws Exception {
do { // Move bounds inward until they meet
while (array.get(++l).compareTo(pivot) < 0)
;这句话,我明白..。三个错误..。
错误检查风格:-2这个语句只是一个';‘,因此,什么也不做。您可能在不合适的位置添加了“;”(例如在if或for循环之后)。查看您是否丢失了代码,或者只需删除额外的“;”。
错误PMD:-1 (超过限制),最好始终将代码包含在带括号的while循环的正文中。它有助于减少出错的可能性。
错误PMD: 0(超过限制),这个while循环的主体是空的。请确保在“时间”之后不要出现分号(;)。如果您不需要在循环的主体中做任何事情,那么很可能完全忽略这个循环。
while ((r != 0) && ((array.get(--r).compareTo(pivot) > 0)))
;还有另外三个错误
错误检查风格:-2这个语句只是一个';‘,因此,什么也不做。您可能在不合适的位置添加了“;”(例如在if或for循环之后)。查看您是否丢失了代码,或者只需删除额外的“;”。
错误PMD: 0(超过限制),最好始终将代码包含在带括号的while循环的主体中。它有助于减少出错的可能性。
错误PMD: 0(超过限制),这个while循环的主体是空的。请确保在“时间”之后不要出现分号(;)。如果您不需要在循环的主体中做任何事情,那么很可能完全忽略这个循环。
swap(array, l, r); // Swap out-of-place values
}
while (l < r); // Stop when they cross
swap(array, l, r); // Reverse last, wasted swap
return l; // Return first position in right partition
}我知道这个测试服务器是有线的,所以我从这种原因得到了分。我如何重写这段代码来执行同样的任务?
发布于 2014-11-08 02:10:22
这些Checkstyle & PMD消息并不完全是错误。它们显示出可能出现错误的地方和糟糕的编程风格。
在你的情况下,他们在某种程度上是错误的:
while ((r != 0) && ((array.get(--r).compareTo(pivot) > 0))) ;它是否在条件内工作,;和{}的遗漏是故意的,因为循环中没有主体。这些错误消息的主要原因是在循环中有一个主体。或打算有一个,但无意中添加了一个;,现在你没有。
然而,这样的构造,那个“滥用”评估表达式的部分做实际工作很快就变得复杂起来。复杂的不是好的风格。
while (r > 0) {
T element = array.get(--r);
if (element.compareTo(pivot) <= 0) {
break;
}
}虽然要详细得多,但应该和以前一样。(r >0比r != 0更稳定,所以我已经改变了。)我想那样会通过样式检查的。
您也可以尝试用一个带有注释的块替换; (因为“空块应该有文档化”应该是另一种样式,至少在eclipse中是这样)。这取决于那些工具认为糟糕的风格是什么。
while ((r != 0) && ((array.get(--r).compareTo(pivot) > 0))) { /* empty */ }https://stackoverflow.com/questions/26812784
复制相似问题