Ich habe eine Frage zu Java?
Guten Abend,
ich möchte eine Dezimalzahl aus einem Bruch errechnen. Ich habe dafür Zähler und Nenner als Integer einzeln festgelegt und wollte sie mit der Methode doubleValue dividieren und in double umwandeln lassen.
Wenn ich jetzt aber in meiner main-Methode darauf zugreifen will, bringt er mir einen Fehler. Eigentlich müsste es doch funktionieren, oder?
public double doubleValue(int nenner, int zaehler) {
return ((double)nenner / (double)zaehler);
public static void main(String[] args) {
System.out.println("Geben sie zwei Zahlen ein.");
int dx = Keyboard.readInt();
int dy = Keyboard.readInt();
double zahl1 = 0;
zahl1.doubleValue(dx, dy);
5 Antworten
Ohne den Code jetzt angeschaut zu haben (bitte setz nächstes Mal alles in den code-tag)
Du nutzt die Methode "doubleValue" einer Variable des Typs Double. Diese besitzt die angegebene Methode eben nicht - diese gibt es nur in der jetzigen Klasse.
Entweder setzt du die Methode als statisch und rufst sie "einfach so" auf, oder erzeugst ein Objekt der aktuellen Klasse und rufst es darüber auf
Der Typ double ist ein primitiver Typ. Dieser kann also keine Methoden besitzen. Vor allem nicht deine. 😉
Um deine Methode aufzurufen, müsstest du eine Instanz deiner Klasse erstellen. Über diese kann der Aufruf stattfinden. Angenommen, deine Klasse heißt Fraction:
class Fraction {
public double doubleValue(int nenner, int zaehler) {
return nenner / (double)zaehler;
}
}
class Main {
public static void main(String[] args) {
// read numbers ...
Fraction fraction = new Fraction();
double zahl1 = fraction.doubleValue(dx, dy);
}
Vergiss auch nicht, deine Methodenblöcke immer zu schließen. In deinem Snippet hast du das bei der Methode doubleValue vergessen.
Für die Division reicht es übrigens, wenn nur eine der beiden Zahlen explizit als double angegeben wird.
- Da fehlen (mindestens) 2 geschweifte Klammern.
- Da zahl1 vom Typ double ist hat es keinerlei Methoden (und "Extension-Methods" gibts in Java auch nicht)
- So wie du doubleValue verwendest müsstest du eine statische Methode draus machen.
- Ein Bruch ist Zähler / Nenner, nicht umgekehrt.
Könntest du bitte versuchen, den kompletten Code in den Codeblock zu setzen?
Wie lautet denn die Fehlermeldung?
zahl1.doubleValue(dx,dy);
Der Punktoperator ist fehl am Platz - Du möchtest nunmal eine Wertzuweisung durchführen.
zahl1 = doubleValue(dx, dy);
Ist mir gar nicht aufgefallen ^^
Kann aber auch leicht passieren, wenn der Fragesteller den Code nicht formatiert (mittlerweile behoben).
Das wird auch einen Fehler ausspucken, da die Methode nicht statisch ist