如何获得每一行的总和?

How to get the sum for each row?

我想查找并显示具有最大总和的行号并显示行值,这是示例 input/output:

问题是每次最大和都是第三行如何解决这些问题

   int [][] scores = new int[4][3];

    for (int i=0; i<scores.length; i++)
    {
        System.out.print("Enter values for row "+i+": ");
        for (int j=0; j<scores[i].length;j++)
            scores[i][j] = kbd.nextInt();
    }
    
    int sum, sumMax, ii=0;
    for (int i=0; i<scores.length; i++)
    {
        sum =0; sumMax = 0; ii=0;
        for (int j=0; j<scores[i].length;j++)
        {
            sum += scores[i][j];
            if (sum>sumMax)
            {
                sumMax = sum;
                ii = i;
            }
        }
    }

    System.out.println("Row "+ii+" has the maximum sum");
    System.out.print("Row "+ii+" has the following values: ");
    for (int j = 0; j < 3; j++)
           System.out.print(scores[ii][j] + " ");

要打印特定行,只需要一个循环

System.out.print("Row " + ii + " has the following values: ");
for (int j = 0; j < 3; j++)
    System.out.print(scores[ii][j] + " ");

Arrays.toString

System.out.println("Row " + ii + " has the following values: " + Arrays.toString(scores[ii]));

另外你的查找最大值代码是错误的,当你将每一行的iisumMax重置为0时,最大值只能是最后一个行,您需要沿行跟踪这 2 个。仅在计算行的总和后才使用 if,无需在每一行的每个弓上进行测试

int sum, sumMax = Integer.MIN_VALUE, ii = 0;
for (int i = 0; i < scores.length; i++) {
    sum = 0;

    for (int j = 0; j < scores[i].length; j++) {
        sum += scores[i][j];
    }

    if (sum > sumMax) {
        sumMax = sum;
        ii = i;
    }
}

您可以在从扫描仪获取输入的同时添加行,并将它们存储在数组中。然后你可以在 sums 数组中搜索最大值:

import java.util.Scanner;

public class Example {

    public static void main(String[] args) {
        Scanner kbd = new Scanner(System.in);
        int[][] scores = new int[4][3];
        int[] rowSums  = new int[4];

        for (int i = 0; i < scores.length; i++) {
            System.out.print("Enter values for row " + i + ": ");
            for (int j = 0; j < scores[i].length; j++){
                scores[i][j] = kbd.nextInt();
                rowSums[i] += scores[i][j];
            }
        }

        int index  = 0;
        int maxSum = rowSums[index];

        for(int i = 1; i < rowSums.length; i++){
            if(rowSums[i] > maxSum){
                maxSum = rowSums[i];
                index = i;
            }
        }

        System.out.println("Row "+index+" has the maximum sum");
        System.out.print("Row "+index+" has the following values: ");
        for(int i = 0; i < scores[index].length; i++){
             System.out.print(scores[index][i] + " ");
        }
    }
}