首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >循环设计有设计问题

循环设计有设计问题
EN

Stack Overflow用户
提问于 2014-11-08 01:38:47
回答 1查看 146关注 0票数 2

对于我的方法,分区,对于我的快速排序,当我运行它的时候是可以的。但是,每当我上传到项目提交页面时,测试都会返回该代码设计的负面结果。就像

代码语言:javascript
运行
复制
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循环的主体是空的。请确保在“时间”之后不要出现分号(;)。如果您不需要在循环的主体中做任何事情,那么很可能完全忽略这个循环。

代码语言:javascript
运行
复制
        while ((r != 0) && ((array.get(--r).compareTo(pivot) > 0)))
            ;

还有另外三个错误

错误检查风格:-2这个语句只是一个';‘,因此,什么也不做。您可能在不合适的位置添加了“;”(例如在if或for循环之后)。查看您是否丢失了代码,或者只需删除额外的“;”。

错误PMD: 0(超过限制),最好始终将代码包含在带括号的while循环的主体中。它有助于减少出错的可能性。

错误PMD: 0(超过限制),这个while循环的主体是空的。请确保在“时间”之后不要出现分号(;)。如果您不需要在循环的主体中做任何事情,那么很可能完全忽略这个循环。

代码语言:javascript
运行
复制
        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
}

我知道这个测试服务器是有线的,所以我从这种原因得到了分。我如何重写这段代码来执行同样的任务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-08 02:10:22

这些Checkstyle & PMD消息并不完全是错误。它们显示出可能出现错误的地方和糟糕的编程风格。

在你的情况下,他们在某种程度上是错误的:

代码语言:javascript
运行
复制
while ((r != 0) && ((array.get(--r).compareTo(pivot) > 0))) ;

它是否在条件内工作,;{}的遗漏是故意的,因为循环中没有主体。这些错误消息的主要原因是在循环中有一个主体。或打算有一个,但无意中添加了一个;,现在你没有。

然而,这样的构造,那个“滥用”评估表达式的部分做实际工作很快就变得复杂起来。复杂的不是好的风格。

代码语言:javascript
运行
复制
while (r > 0) {
    T element = array.get(--r);
    if (element.compareTo(pivot) <= 0) {
        break;
    }
}

虽然要详细得多,但应该和以前一样。(r >0比r != 0更稳定,所以我已经改变了。)我想那样会通过样式检查的。

您也可以尝试用一个带有注释的块替换; (因为“空块应该有文档化”应该是另一种样式,至少在eclipse中是这样)。这取决于那些工具认为糟糕的风格是什么。

代码语言:javascript
运行
复制
while ((r != 0) && ((array.get(--r).compareTo(pivot) > 0))) { /* empty */ }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26812784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档