学c学到头秃也不会的小辰
2019-09-24 23:04
采纳率: 50%
浏览 308
已采纳

java求数组每行的和 用的另一种方法但总是答案不对 求助!

题目描述

输入2个正整数m和n(1≤m≤6,1≤n≤6),然后输入矩阵a(m行n列)中元素,分别计算并输出各行元素之和。

输入

第一行输入两个整数m,n。

随后输入m*n个整数,存入一个m行n列的数组中。

输出

计算并输出矩阵中每行的和。

样例输入 Copy

3 3

1 2 3

4 5 6

7 8 9

样例输出 Copy

6

15

24

import java.util.Scanner;
import java.util.Arrays;
public class Main {
    public static void main(String[]args) {
        Scanner sc = new Scanner(System.in);
        int m =sc.nextInt();
        int n =sc.nextInt();
        int arr[][]=new int[m] [n];
        for(int i=0;i<m;i++) {
            for(int j=0;j<n;j++) {
                arr[i][j]=sc.nextInt();
                arr[i][0]+=arr[i][j];
            }
        }       
        for(int i=0;i<m;i++)
             System.out.println(arr[i][0]);

        }
    }

为什么我输出的7 19 31 每次都多加了每行第一个数据 如何减掉第一个数据啊

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • March97 2019-09-25 09:31
    已采纳

    自己想嘛,每次j==0的时候, arr[i][j]=sc.nextInt();在这里取每行的第一个数,然后执行arr[i][0]+=arr[i][j];那不就是自己加自己,所以多加了一个arr[i][0]的值,
    你可以
    for(int i=0;i for(int j=0;j arr[i][j]=sc.nextInt();
    if(j>0){
    arr[i][0]+=arr[i][j];
    }
    }
    }

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 毕小宝 2019-09-25 10:18

    累加的时候重新定义一个数组变量,不要用 a[i][0] 。

    import java.util.Scanner;
    import java.util.Arrays;
    public class Main {
        public static void main(String[]args) {
            Scanner sc = new Scanner(System.in);
            int m =sc.nextInt();
            int n =sc.nextInt();
            int arr[][]=new int[m] [n];
                    int sum[] new int[m];
            for(int i=0;i<m;i++) {
                for(int j=0;j<n;j++) {
                    arr[i][j]=sc.nextInt();
                    sum[i]+=arr[i][j];
                }
            }       
            for(int i=0;i<m;i++)
                 System.out.println(sum[i]);
    
            }
        }
    
    
    评论
    解决 无用
    打赏 举报
  • qq_31366199 2019-09-25 11:11

    arr[i][0]+=arr[i][j];
    当j=0时,就多加了第一个值

    评论
    解决 无用
    打赏 举报