Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   GoTo in java gibt es nicht... alternative? (https://www.delphipraxis.net/33608-goto-java-gibt-es-nicht-alternative.html)

r_kerber 10. Nov 2004 07:52

Re: GoTo in java gibt es nicht... alternative?
 
Moin Leute,

Ihr habt Java vor Euch und nicht Delphi. :mrgreen:
Zitat:

Zitat von Nicodius
Code:
  public static void main(String[] args) throws Exception
    { 
      String line;
      BufferedReader br = new BufferedReader( new InputStreamReader(System.in));
      int EingabeSec = 0;
      TimeMachine2 tm2 = new TimeMachine2();
      do
      { 
            System.out.println("Sekundeneingabe: ");
            line = br.readLine();
            EingabeSec = Integer.parseInt(line);
            tm2.SetsecondsIN(EingabeSec);
            tm2.transform();
            System.out.println(tm2.GetHours()+" h, " + tm2.GetMinutes() + " m, "+ tm2.GetSeconds() + " s");
            System.out.println("nochmal?");
            line = br.readLine();
      } while (line == "Ja");
    }

was soll da bitteschön falsch sein ;)

Der Vergleich line == "Ja" überprüft, ob zwei Objekte gleich sind, und das ist hier ja wohl nicht der Fall. Zum Vergleich der Zeichenketten gibt es die Methode CompareTo:
Code:
while (line.CompareTo("Ja"));

nailor 10. Nov 2004 08:04

Re: GoTo in java gibt es nicht... alternative?
 
chaotische GOTO sind ne qual, aber sinnvolle gotos können quellcode lesbarer machen, indem sie eine ünnötige klammerebene sparen.

choose 10. Nov 2004 09:23

Re: GoTo in java gibt es nicht... alternative?
 
Zitat:

Zitat von r_kerber
Der Vergleich line == "Ja" überprüft, ob zwei Objekte gleich sind

Genau das führt in der OOP oft zu Missverständnissen. Ein Objekt hat immer eine Identität, die in der Menge aller Objekte einzigartig ist und einen Zustand, der insbesondere bei identischen Klassen (ja, auch Klassen haben eine Identität inne (einige Sprachen betrachten sie als normale Objekte)!) zwischen unterschiedlichen (nicht-identischen) Objekten gleich sein kann.

Objekte können also per Definition gleich, wenn ihr Zustand gleich ist. Das kann in Java mithilfe der Methode Object.equals geprüft werden:
Code:
  AClass anObject = new AClass(aValue);
  AClass anotherObject = new AClass(aValue);

  // anObject is equal to anotherObject
  Assert(anObject.equals(anotherObject));
  Assert(anotherObject.euqals(anObject));
Zwei Objekte sind genau dann identisch, wenn sie dasselbe Objekt sind
Code:
  AClass anObject = new AClass(aValue);
  AClass anotherObject = anObject;
 
  // anObject same as anotherObject (identity)
  Assert(anObject == anotherObject);
  Assert(anotherObject == anObject);
Während dieses Prinzip in allgemeinen Klassen einsichtig sein sollte und von einem Java-Entwickler beherzigt wird, wenn er die equals-Methode überschreibt, scheint es bei anderen Datentypen etwas merkwürdig. Ursache der Missverständnisse ist die "stümperhafte" Umsatung der OOP in Java: Während Zahlen (int, double, etc.) mit gleichem Wert auch identisch sind aber auch nicht über "normale" Konstruktoren erzeugt werden, ist dies bei Strings nicht so! Es gibt in Java leider kein stringentes Konzept zu Objekt-Werttypen (ohne entsprechende Fabriken...), so dass Deine Anweisung
Code:
String aString = "Foo";
String anotherString = "Foo";
vergleichbar wäre mit
Code:
String aString = new String(aValue);
String anotherString = new String(aValue);
bei der Erzeugung der Art
Code:
String aString = aValue;
String anotherString = aValue;
hingegen währen aValue, aString und anotherString identisch...
Schöne Welt ;)

Nicodius 10. Nov 2004 15:08

Re: GoTo in java gibt es nicht... alternative?
 
@rainer ... das compare gibts irgendwie nicht :witch:


... aber PRehrds danke es geht aber nur mit
Code:
} while (line.equals("Ja"));
() müssen sein ;) vielen DANK!!


und danke choose für die oop-einführung ;) auch wenn ichs bei delphi kann ist das bei java schon GANZ anders weiles eben Nur objektorientiert ist ;)


:dp: und wieder mal wurde mir geholfen :dp:

:cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz