Java 如何使while循环正常工作以更正给定的二维数组

Java 如何使while循环正常工作以更正给定的二维数组,java,arrays,debugging,Java,Arrays,Debugging,我正在尝试编写一个方法,该方法将二维数组作为输入,并返回一个新的二维数组,其中所有的零都将从数组中删除 此外,如果第一个数组中有一个元素的值等于第二个数组的长度,则应删除该元素,并用1减去第二个数组中的所有元素 对于第二个阵列,也应重复上述过程 到目前为止,这是我为代码实现编写的,但是代码陷入了一个循环中,我认为它没有完成它应该做的事情 注意:调用ArrayUtils时,使用的是Apache Lang库,这是我输入的2D数组: [[0, 0, 2, 2, 3, 4], [0, 0, 2, 2,

我正在尝试编写一个方法,该方法将二维数组作为输入,并返回一个新的二维数组,其中所有的零都将从数组中删除

此外,如果第一个数组中有一个元素的值等于第二个数组的长度,则应删除该元素,并用1减去第二个数组中的所有元素

对于第二个阵列,也应重复上述过程

到目前为止,这是我为代码实现编写的,但是代码陷入了一个循环中,我认为它没有完成它应该做的事情

注意:调用ArrayUtils时,使用的是Apache Lang库,这是我输入的2D数组:

[[0, 0, 2, 2, 3, 4], [0, 0, 2, 2, 3, 4]]
代码:

public static int[]removetrivalcases(int[]startingSums){
int[][]校正的总和=起始总和;
int计数器=0;
int numRows=correctedSums[0]。长度;
int numCols=修正的和[1]。长度;
布尔零存在=真;
布尔值equalsDimension=true;
布尔值:casesremain=true;
while(普通案例主要){
对于(int i=0;i
关于

但是代码陷入了一个循环,我认为它没有做它应该做的事情

在这里:


如果您在调试器中运行代码,或使用println,您将知道代码卡在什么循环中,这将允许您立即检查并更正它。

请改进您的问题,1)从非信息性标题开始,2)然后告诉我们您尝试调试问题的结果,包括使用调试器运行代码。关于您的“固定”标题,
“有人能帮我更正代码吗?”
,同样,标题应该是信息性的,比如:为什么程序会进入无休止的循环?你的标题并没有说明你的问题本身,只是说明你需要帮助修复一个程序——但我们都知道,否则你就不会在这里了。您的标题应该以一种信息丰富的方式总结您遇到的问题。我运行了代码,但之后,它只从数组中删除了第一个零。它没有完成我指定的其余部分@装满水的气垫船Eels@Chromatica:那么您有了一个新的独立问题,仍然需要进行调试。
public static int[][] removeTrivialCases(int[][] startingSums) {
    int[][] correctedSums = startingSums;

    int counter = 0;

    int numRows = correctedSums[0].length;
    int numCols = correctedSums[1].length;

    boolean zeroesExist = true;
    boolean valueEqualsDimension = true;

    boolean trivialCasesRemain = true;

    while(trivialCasesRemain) {
        for (int i = 0; i < correctedSums.length; i++) {
            for (int j = 0; j < correctedSums[i].length; j++) {
                if (correctedSums[i][j] == 0) {
                    trivialCasesRemain = true;
                    correctedSums[i] = ArrayUtils.removeElement(correctedSums[i], j);
                }

                for (int h = 0; h < correctedSums[i].length; h++) {
                    if (correctedSums[i][h] == 0) {
                        zeroesExist = true;
                    }
                }

            }
        } 

        for (int i = 0; i < correctedSums[0].length; i++) {
            if (correctedSums[0][i] == numCols) {
                trivialCasesRemain = true;
                correctedSums[0] = ArrayUtils.removeElement(correctedSums[0], i);
                for (int j = 0; j < correctedSums[0].length; j++) {
                    correctedSums[0][j]--;
                }

                valueEqualsDimension = false;

                for (int h = 0; h < correctedSums[0].length; h++) {
                    if (correctedSums[0][h] == numCols) {
                        valueEqualsDimension = true;
                    }
                }
            }
        }   

        for (int i = 0; i < correctedSums[1].length; i++) {
            if (correctedSums[1][i] == numRows) {
                trivialCasesRemain = true;
                correctedSums[1] = ArrayUtils.removeElement(correctedSums[1], i);
                for (int j = 0; j < correctedSums[1].length; j++) {
                    correctedSums[1][j]--;
                }
            }

            valueEqualsDimension = false;

            for (int h = 0; h < correctedSums[1].length; i++) {
                if (correctedSums[1][h] == numRows) {
                    valueEqualsDimension = true;
                }
            }
        }

        if (!zeroesExist || !valueEqualsDimension) {
            trivialCasesRemain = false;
        }
    }

    return correctedSums;
}
for (int h = 0; h < correctedSums[1].length; i++) {
for (int h = 0; h < correctedSums[1].length; h++) {