連続した数字の配列を作成する方法に問題があります(つまり、引数として1と10を入力すると、配列には1〜10のすべての数値が入ります)各数字を別の数字(例えば4)にする - 数字が一致する場合(例えば4 == 4)、配列からその数字を削除する。最後に、その配列を返します。数字の省略方法バグ
私は時々動作するが以下の方法を実装しましたが、すべての時間ではありません。理由はわかりません。私は新しい配列を作成し、各アレイを印刷した場合
たとえば、:
ArrayList<Integer> omittedDigitArray = new ArrayList<Integer>(Omit.allIntegersWithout(20, 45, 3));
System.out.println("Array - Numbers with Omitted Digit:");
for (int n : omittedDigitArray) {
System.out.print(n + ", ");
}
番号29は、配列から省略されていますか?誰でも私になぜ教えてもらえますか?ありがとう!
// Creates the ArrayList
ArrayList<Integer> numberList = new ArrayList<Integer>();
// Loop creates an array of numbers starting at "from" ending at "to"
for (int i = from; i < to + 1; i++) {
numberList.add(i);
}
// Check the array to see whether number contains digit
// Code checks whether x contains 5, n == one digit
// IMPORTANT: Doesn't work on the first half of numbers i.e/will remove 3 but not 30
for (int j = 0; j < numberList.size(); j++) {
int number = (int) numberList.get(j); // This can be any integer
int thisNumber = number >= 0 ? number: -number; // if statement in case argument is negative
int thisDigit;
while (thisNumber != 0) {
thisDigit = thisNumber % 10; // Always equal to the last digit of thisNumber
thisNumber = thisNumber/10; // Always equal to thisNumber with the last digit chopped off, or 0 if thisNumber is less than 10
if (thisDigit == omittedDigit) {
numberList.remove(j);
j--;
}
}
}
// Return the completed Array list
return numberList;
}
}
あなたがリストから項目を削除しているとき、あなたはリストを逆方向に反復する必要があります。そうすれば、リストインデックスカウンタを調整する必要はありません。また、あなたの指示は数字が数字の中にあるかどうかは言いません。あなたの指示は、数字が一致するかどうかを示します。 –