ich dich nicht sehen, warum: ist:
// ...in the while loop for the second time...
// Remember, the k array now looks like: k: [null, 1, 2, 3]
for (int i = 0; i < k.length && k[i] != null; i++)
Ihr Zustand an diesem Punkt scheitert, weil
public static void main(String[] args) {
Integer[] k = new Integer[] {0, 1, 2, 3};
for (int m = 0; m < k.length; m++) {
for (int i = 0; i < k.length && k[i] != null; i++) {
System.out.print(k[i] + " ");
}
System.out.println("");
k[m] = null;
}
}
Die Problembeschreibung ist Ihre innere Schleife, die überprüft, ob k[i] != null
. Die zweite Anweisung einer for
-Schleife ist eine Beendigungsbedingung. Wenn es false
zurückgibt, endet die Schleife. Im Wesentlichen versuchen Sie, keine Werte zu drucken, wenn sie null sind, aber dies wird Ihre Schleife bei Erreichen eines Nullwerts einfach beenden. Stattdessen innerhalb der inneren Schleife um den Zustand des Elements überprüfen:
for (int i = 0; i < k.length; i++) {
if (k[i] != null) {
System.out.print(k[i] + " ");
}
}
Zusätzlich können Sie auch die auf den gegenwärtigen Index überspringen nun diese innere Schleife (int i = m
) statt auf null einstellen, so dass die zweite Iteration 1 -3, und dritte ist 2-3, usw. Dies macht zusätzlich die Null-Prüfung/Einstellung überflüssig, sowie die Verwendung von int[]
.So sieht die fertige Lösung wie:
public static void main(String[] args) {
int[] k = new int[] {0, 1, 2, 3};
for (int m = 0; m < k.length; m++) {
for (int i = m; i < k.length; i++) {
System.out.print(k[i] + " ");
}
System.out.println("");
}
}
Wissen Sie, was das 'k [i] = null' in dem Loop-Testmittel!? – user2357112
Und ... wissen Sie, was 'k [m ++] = null 'tut? –
Ich empfehle dringend, lernen, Ihren Debugger zu verwenden. –