Я получаю следующую ошибку для разницы суммы диагоналей - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь найти сумму разности диагонали двумерного массива.

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: ошибка : метод get в interface List<E> не может быть применен к данным типам;

              `d1 = d1+arr.get(i,j);`
                       ^  required: `int`

найдено: int, int

причина: фактические и формальные списки аргументов различаются по длине

где E - переменная типа:

E расширяет Object, объявленный в interface List

Решение. java: 33: ошибка: метод get in interface List<E> не может быть применен к данным типам;

            `d2 = d2+arr.get(i,j);`
                     ^ required: int

найдено: int, int

причина: фактические и формальные списки аргументов различаются по длине

где E - переменная типа: E extends Object, объявленный в interface List

1 Ответ

1 голос
/ 24 февраля 2020

Вы можете переписать метод 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, определенный ранее.

...