首页 > 解决方案 > 如何在java中获取方阵第二大元素的行和列位置

问题描述

给定一个 'n' 阶的方阵列表 [ ] [ ]。'n' 可能的最大值是 20。输入 'n' 的值和矩阵中的正整数,并打印矩阵第二大元素的行和列位置。

我得到了最大元素的位置。但是在获得第二大元素的位置时卡住了。代码如下-

import java.util.*;
class MatrixList
{
    public static void main(String args[])
    {
        Scanner scan = new Scanner(System.in);
        
        System.out.println("Enter the nber of rows");
        int n = scan.nextInt();
        
        if(n > 20)
        {
            System.out.println("number should not be greater than 20.");
        }
        else
        {
            int matrix[][] = new int[n][n];
            int i,j,rowg,colg,rows,cols,flag1,flag2,k,t;
            
            for(i=0;i<n;i++){
                for(j=0;j<n;j++){
                    matrix[i][j] = scan.nextInt();
                }
            }
            
            System.out.println("Orignal Matrix: ");
            for(i=0;i<n;i++){
                for(j=0;j<n;j++){
                    System.out.print(matrix[i][j] + " ");
                }
                System.out.println("");
            }
            flag1 = flag2 = matrix[0][0];
            rowg = colg = rows = cols =0;
            
            for(i=0;i<n;i++){
                for(j=0;j<n;j++){
                    //checking greatest element
                    if(flag2 < matrix[i][j]){
                        flag2 = matrix[i][j];
                        rowg = i;
                        colg = j;
                    }
                    //checking second greatest element
                    **if(flag1 < matrix[i+1][j+1]){
                        flag1 = matrix[i+1][j+1];
                        rows = i;
                        cols = j;
                    }**
                }
            }
            
            for(i =0; i<n;i++){
                for(j=0;j<n;j++){
                    for(k=j+1;k<n;k++){
                        if(matrix[i][j] > matrix[i][k]){
                            t = matrix[i][j];
                            matrix[i][j] = matrix[i][k];
                            matrix[i][k] = t;
                        }
                    }
                }
            }
            System.out.println("The largest element "+flag2+" is in row "+(rowg+1)+" and column "+(colg+1));
            System.out.println("The smallest element "+flag1+" is in row "+(rows+1)+" and column "+(cols+1));
            
            System.out.println("Sorted Matrix: ");
            for(i=0;i<n;i++){
                for(j=0;j<n;j++){
                    System.out.print(matrix[i][j] + " ");
                }
                System.out.println();
            }
        }
    }
}

标签: javaarrayssortingfor-loopmatrix

解决方案


推荐阅读