如何从Java中的1D数组矩阵中删除列?

时间:2019-02-28 03:21:13

标签: java arrays matrix

我得到了一维数组,该数组已打印为3x3矩阵,我正在尝试创建一个排除第二列的新数组:

123
456
789

public void remCol(int clnum)
{

}

1 个答案:

答案 0 :(得分:0)

我已经实施了一个解决方案。我的解决方案是动态的,因此数组中每个元素的长度可以不同。这是代码。

public class Main {

    static int[] array = new int[] { 123, 4565, 78910 };

    public static void main(String[] arg) {
        int clNum = 0;
        remCol(clNum);
        System.out.print("Input : " + clNum + " | Output : [");
        for (int j : array) {
            System.out.print(j + " , ");
        }
        System.out.print("]");
    }

    public static void remCol(int clNum) {

        // checking if clNum is valid
        if (clNum <= 0) {
            return;
        }

        clNum--; // decrement clNum by 1 since array index starts at 0

        for (int i = 0; i < array.length; i++) {
            String value = String.valueOf(array[i]); // convert int to String for easy manipulation
            // checking if value is not null and not empty
            // checking if value has the column index of clNum
            if (value != null && !value.isEmpty() && clNum < value.length()) {
                value = value.substring(0, clNum) + value.substring(clNum + 1, value.length()); // remove the column
                array[i] = Integer.parseInt(value); // convert the String to int
            }
        }

    }
}

以下是输出和结果:

Input : 0 | Output : [123 , 4565 , 78910]
Input : 1 | Output : [23 , 565 , 8910]
Input : 2 | Output : [13 , 465 , 7910]
Input : 3 | Output : [12 , 455 , 7810]
Input : 4 | Output : [123 , 456 , 7890]
Input : 5 | Output : [123 , 4565 , 7891]
Input : 6 | Output : [123 , 4565 , 78910]