【问题标题】:Java checkstyle error in BlueJ when using trackback使用 trackback 时 BlueJ 中的 Java checkstyle 错误
【发布时间】:2011-08-31 00:46:25
【问题描述】:

我正在使用 BlueJ 作为 IDE 在 Java 中做一个算法。我使用 trackback 算法来解决问题,除了 checkstyle 之外,一切都运行良好。 checkstyle 错误是:

Assignment of parameter i is not allowed [on line 336] 
Assignment of parameter j is not allowed [on line 337]

但是,由于 trackback 需要将变量作为参数传递并根据情况进行编辑,所以我对此无能为力。

有人知道如何解决这个问题吗?这是我的代码(错误行已注释):

 public boolean solve(int i, int j) {
        if (i == 9) {
            i = 0; // line 336
            if (++j == 9) { // line 337
                return true;
        }
        }
        ...
        for (int value = 1; value <= 9; ++value) {
            if (possible[value]) {  
                setCell(i,j,value);  
                if (solve(i+1,j)) {
                    return true;
                }
            }
        }
        game[i][j] = 0;
        return false;
}

【问题讨论】:

    标签: java checkstyle trackback bluej


    【解决方案1】:

    您会收到警告,因为 Checkstyle 认为修改方法参数是一种不好的做法。如果您不认为这是不好的做法,请忽略它(或更改 checkstyle 配置),或者更改代码以处理参数的副本:

    public boolean solve(int iIndex, int jIndex) {
        int i = iIndex;
        int j = jIndex;
        // same code as before
    }
    

    【讨论】:

    • 非常好的答案 :) 你知道为什么它认为这是不好的做法吗?
    • 请参阅checkstyle.sourceforge.net/… 了解规则说明。我个人并不关心为参数分配新值。但这可能被认为是不好的做法,因为例如,在调试时您无法判断参数的初始值是什么。它还赋予参数两个职责:作为参数和作为局部变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2015-02-05
    • 2020-03-17
    • 1970-01-01
    相关资源
    最近更新 更多