在运行结果那出现了问题,莫名其妙循环了好多次

问题遇到的现象和发生背景
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);
    }
}

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/031667962056142.png "#left")


问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

你这是循环嵌套判断,不符合鞍点的列就会输出。

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);
    }
}
 
 
 

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632