行列の鞍点 (対応する行の最大要素であり、同時にその列の最小要素である行列内の要素) の位置を見つけるためのコードをいくつか書きました。ただし、次のエラーがあります。
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();
}
}