对于对角线总和之差,我得到以下误差

问题描述 投票:0回答:1

我正在寻找2D阵列对角线的差之和。

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;

 class Result {



public static int diagonalDifference(List<List<Integer>> arr) 
{
     int d1=0,d2=0;
     int res;

  for(int i=0;i<=arr.size();i++)
  {
    for(int j=0;j<=i;j++)
    {
        if(i==j)
        {
            d1=d1+arr.get(i,j);
        }
        if(i==arr.size()-j-1)
        {
            d2=d2+arr.get(i,j);
        }
    }
}
  res=d1-d2;
  return res;
}

}

 public class Solution {
 public static void main(String[] args) throws IOException
  {
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

    int n = Integer.parseInt(bufferedReader.readLine().trim());

    List<List<Integer>> arr = new ArrayList<>();

    for (int i = 0; i < n; i++) {
        String[] arrRowTempItems = bufferedReader.readLine().replaceAll("\\s+$", "").split(" ");

        List<Integer> arrRowItems = new ArrayList<>();

        for (int j = 0; j < n; j++) {
            int arrItem = Integer.parseInt(arrRowTempItems[j]);
            arrRowItems.add(arrItem);
        }

        arr.add(arrRowItems);
    }

    int result = Result.diagonalDifference(arr);

    bufferedWriter.write(String.valueOf(result));
    bufferedWriter.newLine();

    bufferedReader.close();
    bufferedWriter.close();
}
}

错误是:-** Solution.java:29:错误:接口列表中的方法获取不适用于给定类型;

d1 = d1 + arr.get(i,j);^必填:int

找到:int,int

原因:实际参数和形式参数列表的长度不同

其中E是类型变量:

E扩展了在接口列表中声明的对象

Solution.java:33:错误:接口列表中的方法无法应用于给定类型;

d2 = d2 + arr.get(i,j);^必填:int

找到:int,int

原因:实际参数和形式参数列表的长度不同

其中E是类型变量:

E扩展了在接口列表中声明的对象

2个错误**

java list arraylist difference diagonal
1个回答
0
投票

您可以如下重写方法diagonalDifference

public static int diagonalDifference(List<List<Integer>> arr) 
{
    int d1=0,d2=0;
    int res;

    int size = arr.size();
    for(int i=0;i<size;i++)
    {

        d1 += arr.get(i).get(i);
        d2 += arr.get(i).get(size - i -1);

    }
    res=d1-d2;
    return res;
}

您不需要List<List<Integer>>,因为从您的代码中定义了一个不会再修改的int [] []数组,因此您可以传递以前定义的int[][] array

© www.soinside.com 2019 - 2024. All rights reserved.