Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的代码给了我一些奇怪的信息,我不';我不知道如何解释它_Java_Static_Max_Min - Fatal编程技术网

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

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

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

  • 对于
    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数组的最大-最小值