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
未初始化,并且发现它可能在运行时保持未初始化状态,并且发现它稍后在方法中使用,那么它会将此标记为错误