繁体   English   中英

java:将2D数组的值与同一列的arraylist值进行比较

[英]java: comparing value of 2D-array with value of arraylist at the same column

我有一个2D数组,有很多零和一些其他值。 在第一步中,我将一列中的所有行相加,以找出每列的总和。 总和的结果保存在arraylist中。 现在我需要比较2D-Array中的每个值,如果它等于arraylist中其列的总和。 如果它相等,则该行的第一个值将保存在单独的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]);
        }
    }
}

一切正常,直到数组值与arraylist的值进行比较。

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

如果excelMatrixInteger数组,请执行以下操作:

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

除此以外,

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

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

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

广告

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM