Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo,

ich programmiere gerade ein Übungsprogramm über Mobiles (Ein Stäbchen mit 2 Sternen unterschiedlichen Gewichts, sind über die Hebelwirkung ausbalanciert), daran kann wieder ein Mobile hängen....

Auf der anderen Seite kann dieses Mobile durch ein anderes Mobile oder einen einzelnen Stern ausbalanciert sein usw.

Die Klasse Star soll nur einen einzigen Stern erstellen, der ausbalanciert ist da er der einzige Stern ist.

Hier mal ein Codefragment:

public class Star implements Mobile

{

final double weight;

Star(double w)

{

weight = w;

}

public double weight()

{

return weight;

}

public void balance()

{}

public String toString()

{

return weight;

}

}

Im Interface sind die 3 Methoden definiert.

public interface Mobile

{

public double weight(); //Liefert das Gewicht des Mobiles

public String toString(); //Erzeugt eine lesbare Textdarstellung eines Mobiles

public void balance(); //Balanciert ein Mobile aus

}

Beim Compilieren der Klasse bekomme ich die Fehlermeldung:

javac Star.java

javac Star.java

Process started >>>

Star.java:20: cannot find symbol

symbol : method String(double)

location: class Star

return String(weight);

^

1 error

<<< Process finished.

Wer kann mir erklären, was ich falsch mache?

Vielen Dank im Vorraus

Du hast eine Methode toString() die einen Rückgabewert vom Typ String hat. In der Methode gibst du aber einen double-Wert zurück.

Also wird versucht für diese Methode einen String zu erzeugen. Die Klasse String enthält aber keinen Konstruktor der nur einen einzelnen double-Wert erwartet, sodass dir beim compilieren ein Fehler angezeigt wird.

hm ja der double-Wert weight soll als String ausgegeben werden, aber wie mach ichs? :rolleyes:

hi...

String strTestString = 1234.44 + "";

so bekommste das meiner meinung nach auch zu einem String.

Naja, die Konkatenation der double mit dem Leerstring halte ich nicht für besonders elegant. Die statische Methode toString(double) der Klasse Double sollte hier das Mittel der Wahl sein. Das wird vermutlich auch Dragon8 gemeint haben.

Peter

Die Methode toString() wird eigentlich von allem angeboten, da fast alles von Object erbt.

Allerdings ist die o.g. toString() Methode nicht die Object#toString, sondern eine statische Methode mit Parameter. Grund ist, dass hier genau keine Objekte verarbeitet werden, sondern primitive Zahltypen. Seit Java 5 gibt es zwar Autoboxing und -unboxing, aber hier ist evtl. noch ein Cast möglich.

Peter

da fast alles von Object erbt.
Die Aussage finde ich interessant... gibt's ausser primitiven Datentypen (die über Reflection letzten Endes auch Objekte sind) noch irgendwas, das nicht von Object erbt?

Jetzt bin ich mal gespannt...

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.