Betrachten Sie den folgenden Code, der wie viele jedes Element zählt ein Array hat:Warum wird der if-Block nicht für den letzten Fall ausgeführt?
public static void getCounts(int[] list) {
int current = list[0];
int count = 0;
for (int i = 0; i < list.length; i++, count++) {
if (list[i] > current) {
System.out.println(current + " occurs " + count + timeOrTimes(count));
current = list[i];
count = 0;
}
}
System.out.println(current + " occurs " + count + timeOrTimes(count));
}
Für diese Frage, bitte übernehmen list
in aufsteigender Reihenfolge sortiert ist. Wenn list
[1, 1, 2, 3, 4, 4]
ist, zum Beispiel, ist die Ausgabe:
1 occurs 2 times
2 occurs 1 time
3 occurs 1 time
4 occurs 2 times
Nun, wenn ich von den println
loszuwerden, die nach der for
kommen -loop, dh
public static void getCounts(int[] list) {
int current = list[0];
int count = 0;
for (int i = 0; i < list.length; i++, count++) {
if (list[i] > current) {
System.out.println(current + " occurs " + count + timeOrTimes(count));
current = list[i];
count = 0;
}
}
// System.out.println(current + " occurs " + count + timeOrTimes(count));
}
Dann die gleiche Beispiel Eingabe mit , der Ausgang wird:
1 occurs 2 times
2 occurs 1 time
3 occurs 1 time
Mit anderen Worten, die if
Block tun es führt nicht aus, wenn list[i]
der maximale Wert des Arrays ist. Warum ist das der Fall? Im obigen Beispiel ist der Index der ersten 4
i = 4
und list[4] > 3
, daher ist die bedingte Anweisung erfüllt, wird aber immer noch nicht ausgeführt.
Wie kann ich den Code so einstellen, dass der if
Block für alle Fälle ausgeführt wird?
Dank
Diese Frage ist auf Anfängerniveau, aber gut durchdacht und gut geschrieben, trifft alle notwendigen Punkte. Ich wünschte, mehr der Anfängerfragen wären so gut wie diese. –