【问题标题】:How to get the sum for each row?如何获得每一行的总和?
【发布时间】:2021-04-13 10:56:33
【问题描述】:

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

问题是每次最大总和是第三行这些问题怎么解决。

   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] + " ");

【问题讨论】:

  • 有问题吗?你面临什么问题?
  • 最大和的值是多少?
  • 问题是代码仅适用于第 3 行,打印具有最大总和的行的值存在问题

标签: java arrays for-loop row checksum


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以在从扫描仪获取输入的同时添加行并将它们存储在数组中。然后可以在 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] + " ");
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-12-28
      • 2021-08-13
      • 1970-01-01
      • 2020-02-13
      • 2011-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多