Java 试图在矩阵中找到鞍点时出错

Java 试图在矩阵中找到鞍点时出错,java,Java,我已经编写了一些代码来查找矩阵鞍点的位置(矩阵中的元素,它是对应行的最大元素,同时也是其列的最小元素)。但是,有一个错误是: The local variable col may not have been initialized at SaddlePoint.findSaddle(SaddlePoint.java:41) at SaddlePoint.main(SaddlePoint.java:52) 我不明白它为什么这么说。任何帮助都将不胜感激。下面我给出了我的代码: public cla

我已经编写了一些代码来查找矩阵鞍点的位置(矩阵中的元素,它是对应行的最大元素,同时也是其列的最小元素)。但是,有一个错误是:

The local variable col may not have been initialized
at SaddlePoint.findSaddle(SaddlePoint.java:41)
at SaddlePoint.main(SaddlePoint.java:52)
我不明白它为什么这么说。任何帮助都将不胜感激。下面我给出了我的代码:

public class SaddlePoint {

    int arr[][]=new int[4][5];

    public SaddlePoint(int x[][])
    {
        for(int i=0;i<arr.length;i++)
            for(int j=0;j<arr[i].length;j++)
                arr[i][j]=x[i][j];
    }

    public void display(int x[][])
    {
        System.out.println();
        for(int i=0;i<arr.length;i++)
        {for(int j=0;j<arr[i].length;j++)
            System.out.print(arr[i][j]+"\t");
            System.out.println();
        }
    }
    public void findSaddle()
    {
        int row,col,flag;
        for(int i=0;i<arr.length;i++)
        {int max=arr[i][0];col=0;flag=0;
            for(int j=1;j<arr[i].length;j++)
                if(max<arr[i][j])
                {max=arr[i][j];
                    col=j;
                }
            for(int k=0;k<arr.length;k++)
                if(arr[k][col]<max)
                {  flag=1;
                    break;
                }
            if(flag==0)
            {row=i;
                break;
            }
        }
        if(flag==0)
            System.out.println("The Position of the Saddle Point is at Row "+(row+1)+"& Column "+(col+1));
        else
            System.out.println("Not found.");
    }

    public static void main(String args[])
    {
        int array[][]   ={{12,8,37,15,16},{2,12,21,14,13},{15,47,23,20,19},{65,57,43,21,47}};
        SaddlePoint sadl=new SaddlePoint(array);
        sadl.display(array);
        sadl.findSaddle();
    }
}
公共类鞍点{
int arr[][]=新int[4][5];
公共鞍点(整数x[]]
{

对于(int i=0;i,编译器不知道是否会有
for
循环的任何迭代

for(int i=0;i<arr.length;i++)

for(int i=0;i您正在初始化for块中的
col
标志

您对for块的终止声明为:

i根据:

每个局部变量和每个空白的最终字段都必须有一个 发生对其值的任何访问时指定的值

因此,如果编译器发现
col
未初始化,并且发现它可能在运行时保持未初始化状态,并且发现它稍后在方法中使用,那么它会将此标记为错误