我想寫一個方法,將採取一個二維數組作爲輸入,並返回一個新的二維數組,其中所有的零都從陣列。如何使while循環正確工作,以糾正給定的二維數組
另外,如果存在具有等於所述第二陣列的長度的值的第一陣列中的元素,那麼它應該被移除,並且第二陣列中的所有元件將由1.
中減去對於第二個陣列也應該重複上述過程。
這是我爲代碼實現編寫的代碼,但代碼陷入了循環,我認爲它沒有做它應該做的事情。
注意:當ArrayUtils被調用時,在Apache Lang庫正在被使用,而這是2D陣列I輸入:
[[0, 0, 2, 2, 3, 4], [0, 0, 2, 2, 3, 4]]
代碼:
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;
}
請改善您的問題,1)以其非信息性標題開始,2)然後告訴我們您嘗試調試問題的結果,包括使用調試器運行您的代碼。 –
關於您的「固定」標題,「有人可以幫我糾正代碼嗎?」,同樣,標題應該是*信息性的,可能是這樣的:爲什麼程序進入無限循環?你的標題不會告訴你自己的問題本身,只是你需要幫助修復程序 - 但我們都知道,否則你不會在這裏。您的標題應該以信息的方式總結您遇到的問題。 –