Java 如何从二维数组的列和中查找数组的最大值

Java 如何从二维数组的列和中查找数组的最大值,java,arrays,Java,Arrays,第一个查找行的最大值的数组工作正常,但出于某种原因,列和数组在列和数组的元素之外列出了其他内容 import java.util.*; public class Quiz { public static void main(String[] args) { Scanner input = new Scanner(System.in); Scanner input2 = new Scanner(System.in); Syst

第一个查找行的最大值的数组工作正常,但出于某种原因,列和数组在列和数组的元素之外列出了其他内容

import java.util.*;

public class Quiz 
{
    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);
        Scanner input2 = new Scanner(System.in);

        System.out.println("Please eneter 20 numbers");

        int userinput[][] = new int[4][5];

        String StringInput;

        for(int column = 0; column < 4; column++)
        {
            for(int row = 0; row < 5; row++)
            {
                userinput[column][row] = input.nextInt();
            }
        }

        for(int column = 0; column < 4; column++)
        {
            for(int row = 0; row < 5; row++)
            {
                System.out.print(userinput[column][row] + " ");
            }
            System.out.println();
        }


        int[] sumOfRows = new int[userinput.length]; 

        int sumR = 0; 

        int largetstrow = sumOfRows[0];

        for(int row = 0; row < userinput.length; row++)
        { 
            for(int col = 0; col < userinput[0].length; col++)
            { 
                sumR += userinput[row][col]; 
            } 
            sumOfRows[row] = sumR; 
            sumR = 0; 

            if(sumOfRows[row] > largetstrow)
                largetstrow = sumOfRows[row];
        } 
        System.out.println("The sum of each rows are " + Arrays.toString(sumOfRows)); 
        System.out.println(largetstrow);


        int size = userinput[0].length;
        int sumOfColumn[] = new int[size]; // used for columns addition

        int largestColumn = sumOfColumn[0];

        int highestSumC = 0; 
        int highestIndexC = 0; 
        for (int i = 0; i < userinput.length; i++)
        {
            for (int j = 0; j < userinput[i].length; j++)
            {
                sumOfColumn[j] += userinput[i][j];
                if(sumOfColumn[i] > highestSumC)
                { 
                    highestSumC = sumOfColumn[i]; 
                    highestIndexC = i; 
                } 
            }
        }

        System.out.println("The sum of each columns are " + Arrays.toString(sumOfColumn));


        System.out.println(highestSumC);
    }
}
import java.util.*;
公开课测验
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
扫描仪输入2=新扫描仪(System.in);
System.out.println(“请输入20个数字”);
int userinput[][]=new int[4][5];
字符串输入;
for(int列=0;列<4;列++)
{
对于(int行=0;行<5;行++)
{
userinput[列][行]=input.nextInt();
}
}
for(int列=0;列<4;列++)
{
对于(int行=0;行<5;行++)
{
System.out.print(用户输入[列][行]+“”);
}
System.out.println();
}
int[]sumOfRows=newint[userinput.length];
int-sumR=0;
int-largetstrow=sumOfRows[0];
for(int row=0;rowlargetstrow)
largetstrow=sumOfRows[行];
} 
System.out.println(“每行的总和是”+Arrays.toString(sumOfRows));
系统输出打印LN(largetstrow);
int size=userinput[0]。长度;
int-sumOfColumn[]=new int[size];//用于添加列
int largestColumn=sumOfColumn[0];
int最高值c=0;
int highestIndexC=0;
for(int i=0;i最高SUMC)
{ 
最高Sumc=柱的sumOfColumn[i];
highestIndexC=i;
} 
}
}
System.out.println(“每列的总和是”+Arrays.toString(sumOfColumn));
系统输出打印LN(最高消费);
}
}
为什么要从j切换到i

如果您反转循环,将列循环作为外部循环,将行作为内部循环,那么这可能会更容易,这样您就可以按照与第一个循环相同的方式来执行,而不必使用中间数组来保持一个运行总数

此外,将
i
j
作为变量名,以支持
,帮助您了解发生了什么

        // it's j
        sumOfColumn[j] += userinput[i][j];

        // it's i
        if(sumOfColumn[i] > highestSumC)
        { 
            highestSumC = sumOfColumn[i]; 
            highestIndexC = i; 
        }