【问题标题】:java: comparing value of 2D-array with value of arraylist at the same columnjava:将二维数组的值与同一列的arraylist的值进行比较
【发布时间】:2017-01-07 21:57:04
【问题描述】:

我有一个包含很多零和一些其他值的二维数组。在第一步中,我将一列中的所有行加起来以找出每列的总和。求和的结果保存在数组列表中。 现在我需要比较 2D-Array 中的每个值是否等于它在 arraylist 中的列的总和。如果相等,则该行的第一个值将保存在单独的数组列表中。

举个例子:

          {A, 0, 0, 6, 0}
          {B, 0, 2, 0, 2}
          {C, 0, 1, 0, 0}
          {D, 3, 0, 0, 2}

Arraylist    {3, 3, 6, 4}

我想将每个值与arraylist中相同位置的值进行比较。

到目前为止我的代码:

List sumList = new ArrayList();
for(int c = 1; c < excelMatrix.length; c++){
    int sum = 0;
    for(int r = 0; r < excelMatrix.length-1; r++){
        sum = excelMatrix[r][c] + sum;
        sumList.add(sum);
    }
}

List checkList = new ArrayList();
for(int c = 1; c < excelMatrix.length; c++){
    for(int r = 0; r < excelMatrix.length-1; r++){
        if(excelMatrix[r][c].equals(sumList)){
            checkList.add(excelMatrix[r][0]);
        }
    }
}

在数组值与数组列表的值进行比较之前,一切正常。

【问题讨论】:

  • 检查条件 make it -> for(int r = 0; r
  • @GovindMadhu 抱歉,我在发布问题时错过了这一点。在我的代码中,我已经有了 -1。
  • 您确定总和计算正确吗?根据我从代码中看到的情况,情况并非如此。在第一个 for 循环中,应该存在 c=0 而不是 c=1,这样您就可以获取矩阵 [0][0]、[1,0][2,0][3,0] 的值。根据您当前的代码,它将采用 matrix[0,1][1,1][2,1][3,1]。

标签: java arrays arraylist multidimensional-array


【解决方案1】:

您将整数与列表进行比较,而不是与列表中列值的对应总和。

如果excelMatrixInteger 数组,则这样做:

if(excelMatrix[r][c].equals(sumList.get(c-1)))

否则,

if(excelMatrix[r][c] == sumList.get(c-1))

【讨论】:

    【解决方案2】:

    您没有在示例代码中指定类型,所以我假设它是:

        String[][] excelMatrix = {{"A", "0", "0", "6", "0"},
                                  {"B", "0", "2", "0", "2"},
                                  {"C", "0", "1", "0", "0"},
                                  {"D", "3", "0", "0", "2"}};
    
        List<String> sumList = new ArrayList<>();
        sumList.add("3");
        sumList.add("3");
        sumList.add("6");
        sumList.add("4");
    

    并像这样修改了您的 for 循环:

        List<String> checkList = new ArrayList<>();
    
        for(int c = 0; c < excelMatrix.length; c++){
            for(int r = 1; r < excelMatrix[0].length; r++){
                if(excelMatrix[c][r].equals(sumList.get(r-1))){
                     checkList.add(excelMatrix[c][0]);
                }
            }
        }
    

    最后

        for(int i = 0; i<checkList.size(); i++){
            System.out.print(checkList.get(i));
        }
    

    给予

    广告

    【讨论】:

      【解决方案3】:

      这与您正在寻找的答案完全无关。您用于计算列元素总和的代码是错误的。使用以下代码获取正确的总和列表。

         List sumList = new ArrayList();
              for(int c = 0; c < excelMatrix.length; c++){
                  int sum = 0;
                  for(int r = 0; r < excelMatrix.length; r++){
                      sum = excelMatrix[r][c] + sum;
                      System.out.println(sum);
      
                  }
                  sumList.add(sum);
              }
      

      【讨论】:

        猜你喜欢
        • 2017-10-22
        • 2012-04-13
        • 2022-01-07
        • 1970-01-01
        • 2021-02-13
        • 1970-01-01
        • 1970-01-01
        • 2016-02-08
        • 1970-01-01
        相关资源
        最近更新 更多