我的代码给了我一些奇怪的信息,我不知道如何解释它

时间:2014-05-03 14:51:47

标签: java static max min

当我尝试编译此代码时,Eclipse会给出以下两个错误:

  • maxmin函数:maxmin的非法修饰符;只允许决赛

  • Mn:无法将Mn解析为变量

为什么会出现这两个错误?

我认为this可能已经回答了它,但我无法理解其中使用的行话。

这是我的代码:

public static int maxmin(int [][]B, int ver) {
    if (ver == 1) {            // max operation
        int M = 0;
        for (int m = 1; m < 3; m++){
            for (int n = 1;n < 3; n++){
                if (M < B[m][n]){
                    M = B[m][n];
                }
            }
        }
        return M;
    } else if (ver == 2) {     // min operation
        int Mn=10;
    }
    for (int m = 1; m < 3; m++) {
        for (int n = 1; n < 3; n++) {
            if (Mn > B[m][n]) {
                Mn = B[m][n];
            }
        }
    }
}
return Mn;
}

2 个答案:

答案 0 :(得分:1)

Mn块中定义了else if变量。因此,当您在for循环中访问它时,它找不到它的声明。你应该在方法的开头移动声明int Mn = 0,并在其他地方将其分配给10,如果

答案 1 :(得分:0)

public static int maxmin(int[][] B, int ver) {
    if (ver == 1) {// max operation
        int M = 0;
        for (int m = 1; m < 3; m++) {
            for (int n = 1; n < 3; n++) {
                if (M < B[m][n]) {
                    M = B[m][n];
                }
            }
        }
        return M;
    } else if (ver == 2) {// min operation
        int Mn = 10;

        for (int m = 1; m < 3; m++) {
            for (int n = 1; n < 3; n++) {
                if (Mn > B[m][n]) {
                    Mn = B[m][n];
                }
            }
        }
        return Mn;
    } else {
        throw new IllegalArgumentException("invalid ver, must be 1 or 2");
    }
}