当我尝试编译此代码时,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;
}
答案 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");
}
}