Ich untersuche dieses Codebeispiel:
%Vor%Ich verstehe nicht, warum die "Not Found" -Anweisung aufgerufen wurde und die entsprechende Nachricht auf der Konsole gedruckt wird, wenn ich eine Suchnummer wie 10 eingabe, in diesem Fall goto: Found-Anweisung wird ausgeführt, also goto: NotFound-Anweisung wird nie sein aufgerufen, aber immer noch die entsprechende Nachricht ist auf der Konsole gedruckt, ich verstehe nicht, wie in diesem Fall Programm springt nie auf diese "NotFound" Label.
Bitte, wenn Sie mir jetzt eine Hand darüber geben ...
Danke
Eww goto's, würde ich verwenden und if/else
statement, aber wenn du goto's brauchst:
Ich würde diesen Code umschreiben, um die Verwendung von goto zu vermeiden:
%Vor%Es wird aufgerufen, weil Ihr Code in der Found-Liste nichts hat, um den Code im NotFound-Label zu überspringen (es sei denn, Sie rufen goto erneut auf, die Ausführung wird durch das Label fallen und nicht überspringen).
Davon abgesehen, benutze goto
nicht! Ich werde so weit gehen und sagen, dass es immer eine schlechte Idee ist und neu geschrieben werden kann.
In Ihrem Fall können Sie ein einfaches boolesches Flag hinzufügen, um Ihren goto loszuwerden:
%Vor%Wenn Sie nicht möchten, dass die "Not Found" -Statements ausgeführt werden, wenn die "Found" -Statements ausgeführt werden, verwenden Sie ein anderes Goto, um den NotFound-Teil zu überspringen. gehe zu einem Abschnitt, aber das bedeutet nicht, dass der Abschnitt nicht ausgeführt wird, wenn er nicht über einen Goto angesprungen wird. Denken Sie daran, dass der Code in einer Top-Down-Version ausgeführt wird. Wenn Sie also keinen Code überspringen, wird er ausgeführt.
Beispiel:
%Vor% Weil, nachdem es zu Found
gesprungen ist, die Ausführung einfach zur nächsten Zeile fortfährt, die zufällig die Schreibzeile der "nicht gefundenen" Konsole ist. Sie müssen noch einen weiteren Sprung hinzufügen, um darüber zu springen (oder noch besser, dies neu zu gestalten, um die Gotos komplett zu vermeiden)
Es ist genau so ein Problem, dass GOTOS vermieden werden sollten.