Im Folgenden finden Sie die Lösung und Ausgabe des Thema-Puzzles, und ich habe Probleme zu verstehen, wie es funktioniert.Head First Java Puzzle4 (Kapitel 4, S. 91) Erläuterung
public class Puzzle4 {
public static void main(String[] args) {
Puzzle4b[] obs = new Puzzle4b[6];
int y = 1;
int x = 0;
int result = 0;
while (x<6) {
obs[x] = new Puzzle4b();
obs[x].ivar = y;
y = y*10;
x = x+1;
}
x = 6;
while (x>0) {
x = x-1;
result = result + obs[x].doStuff(x);
}
System.out.println("result " + result);
}
}
class Puzzle4b {
int ivar;
public int doStuff(int factor) {
if (ivar>100) {
return ivar*factor;
} else {
return ivar*(5-factor);
}
}
}
Ausgang:
result 543345
Von meinem Verständnis, die ersten While-Schleife durch 6-mal ausgeführt wird (von x == 0 bis x == 5). Die y-Variable und wiederum 'ivar' wird einen Wert von 1.000.000 haben (ich denke, das ist der Punkt, an dem ich falsch liege, aber ich werde fortfahren in der Hoffnung, korrigiert zu werden).
Die zweite While-Schleife ist ein bisschen verwirrend für mich. Es wird sechs Mal durchlaufen, wobei die zweite Zeile der Schleife die 'x' Werte an die doStuff Methode übergibt, um einen Wert zurückzugeben. Die Zahlen, die ich für das Ergebnis erstelle, stimmen nicht mit dem tatsächlichen Ergebnis überein.
Jede Hilfe hier würde geschätzt werden. Bitte lassen Sie es mich wissen, wenn ich falsch darüber nachdenke. Wenn jemand meinen Code neu formatieren möchte, um ihn besser an Industriestandards auszurichten, wäre es großartig, von Anfang an gute Gewohnheiten zu lernen!
Es würde helfen, wenn Sie das Puzzle zuerst erklärten. – shmosel
Haben Sie den Code in Ihrem Debugger um eine Zeile einzeln durchlaufen? Wenn nicht, ist das der richtige Ort, um zu beginnen. Wenn du dann den genauen Ort identifizierst, an dem es sich nicht so verhält, wie du es erwartest, wenn du noch eine Frage hast, dann bearbeite deinen Beitrag und füge Details hinzu, was du nicht verstehst. –
1. Es ist nur eine Übung, die den Leser bittet, einige Lücken mit Code aus einem Pool von Möglichkeiten zu füllen. Nicht wirklich ein Puzzle. – Boris