Frage von Pokecrafter567, 59

Java goto FRAGE?

Ich habe eine Frage!

Wie kann ich bei Java mit goto zu einem bestimmten "Block" hinspringen (so wie bei batch vllt kp) also dass ich nen block mache names ":2" oder so (keine ahnung wie das in java heißt das will ich ja wissen) und dann irgendwann wenn man es braucht "goto :2" machen...

Wenn das geht dann sagt wie es geht und bitte verständlich, ich mache Java erst seit 6 Tagen!

Antwort
von 3v1lH4x0R, 21

Ok ganz kurz.
Gotos in Massen sind zu vermeiden, ja.
Aber ein oder 2 gezielte können sogar helfen, da man das ganze drum herum ersparrt.

Nun zu gotos in Java: Hierzu findet sich auf Gerson Kurz' Seite was tolles.
http://www.p-nand-q.com/programming/obfuscation/java/computed_gotos_howto.html

Bitte genau angucken. Hilft sehr komplexere Strukturen zu verstehen. Falls es nicht geht dann frag nach. Dann erklär ich's.

Antwort
von ceevee, 35

goto ist eine Unart aus Batch, die man sich beim Programmieren lernen ganz schnell abgewöhnen sollte. goto ist böse! Lass uns das mal durchspielen. Wir haben die Sprungmarken :1, :2, :3 (die erstmal zu :2 springt), :4, :5 (:5 enthält auch :6 und :7) und :8 und :9. :1 und :9 springen jeweils zueinander.. Nun soll :10, :5a und :5b dazukommen, dafür soll :4 weg. Und, hast du schon einen Knoten im Kopf? Das bezeichnet man nämlich als "Spagetticode" und da siehst du irgendwann überhaupt nicht mehr durch.

https://de.wikipedia.org/wiki/Spaghetticode

Das Beispiel aus dem anderen Kommentar hattest du schon fast richtig


if (x==2) {

// do something

}


else if (x==3) {

// do something else

}

Allgemein empfiehlt es sich auch (gerade, wenn du erst seit 6 Tagen dabei bist), systematisch mit einem Buch oder einem Tutorial zu üben und nicht irgendwas drauflos zu coden, was dann aus irgendwelchen Gründen vielleicht ein bisschen funktioniert, du aber nicht verstehst, warum eigentlich...

Kommentar von Pokecrafter567 ,

Ja ich gucke mir ja tutorials an bzw so eine tutorial reihe, aber ich habe schon ohne hilfen einen taschenrecher programmiert der 2 zahlen berechnet und diese addieren, subtrahieren, multiplizieren und dividieren kann. Also ich weiß schon was ich schreibe... :)

Danke

Kommentar von CrystalixXx ,

Wenn du eine Tutorial-Reihe von YouTube meinst (ganz egal welche), dann lass es sein. Vergiß das ganz schnell und greif zu einem gescheiten Buch oder schau auf entsprechend qualifizierten Webseiten nach - und nicht solche, die von einem pubertären Pseudo-Experten, der irgendwo was cooles gesehen hat und dann mit seinem Halbwissen (oder weniger) glänzen möchte, erstellt wurde.

Kommentar von PerfectMuffin ,

Wenn man goto richtig verwendet, sieht es in etwa aus, wie Assembler.

Übrigens verwendet Java Sprungbefehle im Bytecode(muss ja). Für nicht-Jasmin Programmierer nicht relevant, aber ein nettes Detail.

Kommentar von CrystalixXx ,

In die kleinste Ausführungseinheit übersetzt beruht jede Sprache auf Sprungbefehle, zwangsläufig. Die Frage ist nur, ob man es im großen und für den Menschen nutzbaren Format (in Form einer einfach lesbaren Programmiersprache) beibehalten soll/muss.

Im Grunde lässt sich jede Goto-Anweisung in eine syntaktisch definierte Kontrollstruktur überführen, die zum einen in einer IDE durch Formatierung die Lesbarkeit erhöht und zum anderen für den Menschen eine Übersichtlichkeit schafft, die den Programmierprozess auf die eigentliche Problematik lenkt. Natürlich kann man sich ständig überlegen, wie man wohin springen kann. Man kann es aber auch lassen und seine Hirnressourcen für die eigentliche Programmierung nutzen.

Wenn jemand Goto-Anweisungen nutzen möchte, dann sollte er definitiv kein Anfänger sein und ganz genau wissen, was das eigentlich bedeutet. Ich persönlich sehe darin jedenfalls keinen Vorteil.

Kommentar von 3v1lH4x0R ,

Goto kommt nicht aus Batch. Und ich finde es sollte schon relevant sein, wenn man versteht wie der Bytecode am Ende aussieht schreibt man viel besseren Code. Also meiner Erfahrung mit Leuten nach. Außerdem is Jasmin nur einer von vielen JVM Assemblern.

Antwort
von Mikkey, 23

Goto ist Bääh und das in jeder Sprache . Nur in COBOL und Assembler kommt man in der Regel nicht ohne aus.

Um Dein Beispiel aus dem Kommentar aufzugreifen:

if (x == 3)

    ProcessFirstCase();

else if (x == 5)

    ProcessSecondCase();

weitere Aktionen;

Für solche Aktionen hat man {...} und Methoden erfunden.

Antwort
von MalNachgedacht, 7

Wenn man als erstes eine Programmiersprache gelernt hat in der mit Goto gearbeitet wird (alte BASIC-Dialekte oder Assembler) dann mag man gar nicht glauben dass es ohne Goto geht.
Ich programmiere seit mindestens 15 Jahre ohne Goto - und habe diesen Befehl auch nie vermisst.

Die beiden Kontrollstrukturen   IF-THEN-ELSE und WHILE würden zusammen mit Methodenaufrufen bereits ausreichen um alles zu machen was man mit einem Goto machen könnte.

In Java hat man obendrein noch FOR, CASE und BREAK und CONTINUE sowie RETURN - und braucht definitiv keinen GOTO

Antwort
von kordely, 20

In Java ist goto Tabu. Mache Schleife, Rekursion oder Funktion!


Antwort
von grtgrt, 20

In einen Block hineinzuspringen, ist verboten.

Ein brauchbarer Compiler wird es dir auch gar nicht erst erlauben. 

Der Goto-Befehl macht nur Sinn, einen Block vorzeitig zu verlassen.

Antwort
von triopasi, 15

Lass goto's, das braucht man in Java überhaupt nicht!!!! Gotos = sch*** Code.

Keine passende Antwort gefunden?

Fragen Sie die Community