为了账号安全,请及时绑定邮箱和手机立即绑定

通过循环从数组中删除多行

通过循环从数组中删除多行

慕森王 2022-01-12 16:18:08
我有二维数组(测试)和需要删除行数的二维数组(删除行)。问题是我创建的循环在我尝试打印测试数组时没有结果。我需要创建不包括第 0、1、3、4 行的新矩阵。如何在 while 循环之外访问新数组?import java.util.ArrayList;import java.util.Arrays;public class remove{    public static void main( String[] args )    {        double[][] test = { { 100 }, { 200 }, { 300 }, { 400 }, { 500 }, { 600 }, { 700 },                           { 800 }, { 900 }, { 1000 } };        int[][] removeRow = { { 0 }, { 1 }, { 3 }, { 4 }, };        int reduce = 1;        int r = 0;        while ( reduce == 0 )        {            ArrayList<double[]> rowsToKeep = new ArrayList<double[]>( test.length );            for ( int i = 0; i < test.length; i++ )            {                if ( i != removeRow[0][0] - r )                {                    double[] row = test[i];                    rowsToKeep.add( row );                }            }            r++;            test = new double[rowsToKeep.size()][];            for ( int i = 0; i < rowsToKeep.size(); i++ )            {                test[i] = rowsToKeep.get( i );            }            reduce = removeRow.length - r;            r = r++;            System.out.println( Arrays.deepToString( test ) );        }    }}
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

我稍微改变了你的算法。在这里,if (j < removeRow.length && removeRow[j][0] == i)我们找到要删除的行并且什么都不做,只是j在else块中增加,否则在rowsToKeep列表中添加行。


试试这个:


double[][] test = { {100}, {200}, {300}, {400}, {500}, {600}, {700}, {800}, {900}, {1000} };

int[][] removeRow = { {0}, {1}, {3}, {4} };

int j = 0;

List<double[]> rowsToKeep = new ArrayList<>(test.length);

for (int i = 0; i < test.length; i++) {

    if (j < removeRow.length && removeRow[j][0] == i) {

        j++;

    } else {

        double[] row = test[i];

        rowsToKeep.add(row);

    }

}

test = new double[rowsToKeep.size()][];

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

    test[i] = rowsToKeep.get(i);

}

System.out.println(Arrays.deepToString(test));


查看完整回答
反对 回复 2022-01-12
  • 1 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信