import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class linkone {
public static void MinMax(int A[][]) throws IOException{
int M;
int N;
int i,j;
int min=0;
int t=0;
String strM;
String strN;
String tempstr;
BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入矩阵A的维数(M,N):");
System.out.println("请输入矩阵A的M值");
strM=keyin.readLine();
M=Integer.parseInt(strM);
System.out.println("请输入矩阵A的N值");
strN=keyin.readLine();
N=Integer.parseInt(strN);
A=new int[M][N];
System.out.println("请输入矩阵A的各个元素");
System.out.println("请输入值后按enter确认");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
System.out.println("a"+i+j+"=");
tempstr=keyin.readLine();
A[i][j]=Integer.parseInt(tempstr);
}
}
System.out.println("需要查找马鞍点的数组为");//打印数组A
for(int v=0;v<M;v++)
{
for(int p=0;p<N;p++)
System.out.print(A[v][p]+" ");
System.out.println();
}
for(int w=0;w<M;w++)
{
min=A[w][0];
for (int r=0;r<N;r++)
{
if(A[w][0]>A[w][r])
{
min=A[w][r];
t=r;
}
int max=min;
for(int k=0;k<M;k++)
{
if(max>A[k][t])
{int count=0;
count++;
System.out.println("第"+count+"马鞍点为"+A[w][r]);
} else {
System.out.println("此列不存在马鞍点");
}
}
}
}
}
public static void main(String[] args) throws IOException {
int [][]A = null;
linkone.MinMax(A);
}
}

你这是循环嵌套判断,不符合鞍点的列就会输出。
System.out.println("此列不存在马鞍点");
放到循环外边
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class linkone {
public static void MinMax(int A[][]) throws IOException{
int M;
int N;
int i,j;
int min=0;
int t=0;
String strM;
String strN;
String tempstr;
BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入矩阵A的维数(M,N):");
System.out.println("请输入矩阵A的M值");
strM=keyin.readLine();
M=Integer.parseInt(strM);
System.out.println("请输入矩阵A的N值");
strN=keyin.readLine();
N=Integer.parseInt(strN);
A=new int[M][N];
System.out.println("请输入矩阵A的各个元素");
System.out.println("请输入值后按enter确认");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
System.out.println("a"+i+j+"=");
tempstr=keyin.readLine();
A[i][j]=Integer.parseInt(tempstr);
}
}
System.out.println("需要查找马鞍点的数组为");//打印数组A
for(int v=0;v<M;v++)
{
for(int p=0;p<N;p++)
System.out.print(A[v][p]+" ");
System.out.println();
}
int count = 0;
int k;
for(int w=0;w<M;w++)
{
min=A[w][0];
for (int r=0;r<N;r++)
{
if(A[w][0]>A[w][r])
{
min=A[w][r];
t=r;
}
int max=min;
for(k=0;k<M;k++)
{
if(max>A[k][t])
{
count++;
System.out.println("第"+count+"马鞍点为"+A[w][r]);
break;
}
}
if(k==M)
System.out.println("此列不存在马鞍点");
}
}
}
public static void main(String[] args) throws IOException {
int [][]A = null;
linkone.MinMax(A);
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!