public void removeDups() {
int i, k, j, lastFound = 0;
if (this.nElements < 1) {
System.out.println("Empty Array");
} else {
for (i = 0; i < this.nElements; i = lastFound) //outer loop
{
for (j = i + 1; j < this.nElements; j++) {
if (this.arr[i] == this.arr[j]) {
lastFound = i;
for (k = i; k < this.nElements; k++) {
this.arr[k] = this.arr[k + 1];
}
this.nElements--;
break;
}
}
}
for (i = 0; i < this.nElements; i++) {
System.out.println(this.arr[i]);
}
}
}
前のメソッドは、それを呼び出すオブジェクト(配列)から重複を削除します。問題は、外側のループを増分ごとに特定の位置から開始することです。その位置の値を変数lastFoundに割り当て、その変数を増分に入れます。ループの一部ですが、プログラムは無限ループになり、停止することはありません。その問題は何ですか?