Java 我的代码给了我一些奇怪的信息,我不';我不知道如何解释它
当我尝试编译此代码时,Eclipse会出现以下两个错误:Java 我的代码给了我一些奇怪的信息,我不';我不知道如何解释它,java,static,max,min,Java,Static,Max,Min,当我尝试编译此代码时,Eclipse会出现以下两个错误: 对于maxmin函数:maxmin的修饰符非法;只允许决赛 对于Mn:Mn不能解析为变量 为什么会出现这两个错误 我想我可能已经回答了,但我不明白其中的行话 这是我的密码: public static int maxmin(int [][]B, int ver) { if (ver == 1) { // max operation int M = 0; for (int m
- 对于
函数:maxmin的修饰符非法;只允许决赛maxmin
- 对于
:Mn不能解析为变量Mn
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;
}
公共静态int-maxmin(int[]B,int-ver){
如果(ver==1){//max操作
int M=0;
对于(int m=1;m<3;m++){
对于(int n=1;n<3;n++){
if(MB[m][n]){
Mn=B[m][n];
}
}
}
}
返回Mn;
}
变量Mn
在else if
块中定义。因此,当您在for循环中访问它时,它找不到它的声明。Insetad您应该在方法开头移动声明int Mn=0
,并在else if公共静态int maxmin(int[]]B,int ver)中将其分配给10{
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");
}
}
如果(ver==1){//max操作
int M=0;
对于(int m=1;m<3;m++){
对于(int n=1;n<3;n++){
if(MB[m][n]){
Mn=B[m][n];
}
}
}
返回Mn;
}否则{
抛出新的IllegalArgumentException(“无效版本,必须为1或2”);
}
}
在int Mn=10
下面的右括号在做什么?当前,它会终止if
块。您的程序有几个问题,您发布的final
错误不在其中。你的花括号是错误的,Mn
在使用时可能没有初始化(这就是错误试图说的。此时它不知道任何名为Mn
的变量)。进一步阅读:scopes。对于Mn,您试图返回它,但它不能保证被初始化!您的代码可能不会进入第17行的min操作或if,这意味着Mn变量甚至不存在,因此无法返回。尝试在if语句之前初始化它。在这里查找一些“标准算法”,查找2d数组的最大-最小值