Java, programmieren

Hallo, ich bin grade bei folgender Aufgabe:

Schreiben Sie eine Applikation LogUndRunden. Die Applikation soll zwei
Methoden enthalten.
Die erste Methode soll den Logarithmus einer Zahl zu einer beliebigen Basis,
die der Methode als Parameter zu übergeben sind, berechnen.
Die zweite Methode soll eine beliebige Gleitkommazahl auf eine gewünschte Anzahl Nachkommastellen runden. Die Gleitkommazahl und die Anzahl der
Nachkommastellen sollen der Methode als Parameter übergeben werden.
a) Berechnen Sie log10 13, log2 10 und loge 25!
b) Runden Sie 13,0 / 3,5 = 3,7142857 … auf 2, 3 und 4
Nachkommastellen!
Wählen Sie für Ihre Variablen geeignete Datentypen.
Lesen Sie die Werte mit JOptionPane ein.
Hinweis 1: Die Berechnung des Logarithmus einer beliebigen Zahl zu einer
beliebigen Basis lässt sich wie folgt realisieren:
Logarithmus der Zahl / Logarithmus der beliebigen Basis!
Hinweis 2: Die Zahl e lautet 2,718281828…!
Hinweis 3: Nutzen Sie zum Runden die Methoden round() und pow() der Klasse Math.

Ich bin noch nicht fertig, jedoch wollte ich fragen, ob ihr mir vielleicht sagen könnt, woher die Fehlermeldungen kommen.

  1. invalid method declaration; return type required
  2. cannot return a value from method whose result type is void

Ich denke der 1. Fehler kommt daher, weil die return Anweisung schon falsch ist, aber wieso?

import javax.swing.JOptionPane;

public class Main {

public static void main(String[] args) {
String eingabe1, eingabe2, eingabe3;
double zahl;
double basis;
char zeichen = ‚e‘;
double ergebnis;

eingabe1 = JOptionPane.showInputDialog(„Bitte geben Sie die Zahl des Logarithmus an“);
zahl = Double.parseDouble(eingabe1);
eingabe2 = JOptionPane.showInputDialog(„Bitte geben Sie die Basis des Logarithmus an“);
basis = Double.parseDouble(eingabe1);
if (basis == ‚e‘) {
basis = 2.718281828;
}

}

public static berechneLogarithmus(double zahl, double basis) {

return Math.log(zahl) / Math.log(basis);

}
}

public static berechneLogarithmus(double zahl, double
basis) {

return Math.log(zahl) / Math.log(basis);

}
}

Hallo,

beide Fehler haben eine Ursache. Die Methode berechneLogarithmus muss einen Rückgabetyp definieren. Wenn nichts zurückgegeben wird, dann ist der Tyo „void“. In Ihrem Fall wäre vermutlich:

public static double berechneLogarithmus(double zahl, double

basis) {

richtig, weil ja eine Fließkommazahl aus der Berechnung hervorgeht.

VG,
Marcel.

Oh stimmt, das macht natürlich Sinn. Ich erhalte jetzt keinen Fehler mehr, doch bei jeder Zahl zu der ich den Logarithmus berechnen lassen möchte, erhalte ich als Ergebnis 1.0 wie kommt das?

import javax.swing.JOptionPane;

public class Main {

public static void main(String[] args) {
String eingabe1, eingabe2, eingabe3;
double zahl;
double basis;
char zeichen = ‚e‘;
double ergebnis;

eingabe1 = JOptionPane.showInputDialog(„Bitte geben Sie die Zahl des Logarithmus an“);
zahl = Double.parseDouble(eingabe1);
eingabe2 = JOptionPane.showInputDialog(„Bitte geben Sie die Basis des Logarithmus an“);
basis = Double.parseDouble(eingabe1);
if (basis == ‚e‘) {
basis = 2.718281828;
}
ergebnis = berechneLogarithmus(zahl, basis);
System.out.println("Der Logarithmus der Zahl beträgt: " + ergebnis);

}

public static double berechneLogarithmus(double zahl, double basis) {

return Math.log(zahl) / Math.log(basis);

}
}

Hallo,
ich habe das Programm soweit fertig, jedoch bekomme ich total unverständliche Ausgaben:

import javax.swing.JOptionPane;

public class Main {

public static void main(String[] args) {
String eingabe1, eingabe2, eingabe3, eingabe4;
double zahl, basis, ergebnis, ergebnis1, rund;
char zeichen = ‚e‘;
int nkstelle;

eingabe1 = JOptionPane.showInputDialog(„Bitte geben Sie die Zahl des Logarithmus an!“);
zahl = Double.parseDouble(eingabe1);
eingabe2 = JOptionPane.showInputDialog(„Bitte geben Sie die Basis des Logarithmus an!“);
basis = Double.parseDouble(eingabe1);
if (basis == ‚e‘) {
basis = 2.718281828;
}

eingabe3 = JOptionPane.showInputDialog(„Bitte geben Sie die zu rundende Zahl ein!“);
rund = Double.parseDouble(eingabe3);

eingabe4 = JOptionPane.showInputDialog(„Bitte geben Sie an, auf wieviel Nachkommastellen gerundet werden soll!“);
nkstelle = Integer.parseInt(eingabe4);

ergebnis = berechneLogarithmus (zahl, basis);
System.out.println("Der Logarithmus der Zahl beträgt: " + ergebnis);

ergebnis1 = runde (rund, nkstelle);
System.out.println("Die gerundete Zahl lautet: " + ergebnis1);

}

public static double berechneLogarithmus(double zahl, double basis) {

return Math.log(zahl) / Math.log(basis);

}

public static double runde (double rund, int nkstelle){

return Math.round(rund * nkstelle);

}
}

Alle Methoden, die nicht der Konstruktor sind müssen einen Rückgabetyp haben. Wenn die Methoden keinen Wert zurückgeben sollen muss der Typ „void“ sein.

Aber es müssen beide Methoden einen Rückgabewert besitzen und das hab ich doch realisiert oder nicht?

Aber es müssen beide Methoden einen Rückgabewert besitzen und
das hab ich doch realisiert oder nicht?

Nein, haben sie nicht. Zwischen „Public Stativ“ und dem methodennamen muss der Datentypen stehen.

ja da steht doch public static double…

ja da steht doch public static double…

Wo? Ich sehe nur „Public static berechne…“

import javax.swing.JOptionPane;

public class Main {

public static void main(String[] args) {
String eingabe1, eingabe2, eingabe3, eingabe4;
double zahl, basis, ergebnis, ergebnis1, rund;
char zeichen = ‚e‘;
int nkstelle;

eingabe1 = JOptionPane.showInputDialog(„Bitte geben Sie die Zahl des Logarithmus an!“);
zahl = Double.parseDouble(eingabe1);
eingabe2 = JOptionPane.showInputDialog(„Bitte geben Sie die Basis des Logarithmus an!“);
basis = Double.parseDouble(eingabe1);
if (basis == ‚e‘) {
basis = 2.718281828;
}

eingabe3 = JOptionPane.showInputDialog(„Bitte geben Sie die zu rundende Zahl ein!“);
rund = Double.parseDouble(eingabe3);

eingabe4 = JOptionPane.showInputDialog(„Bitte geben Sie an, auf wieviel Nachkommastellen gerundet werden soll!“);
nkstelle = Integer.parseInt(eingabe4);

ergebnis = berechneLogarithmus (zahl, basis);
System.out.println("Der Logarithmus der Zahl beträgt: " + ergebnis);

ergebnis1 = runde (rund, nkstelle);
System.out.println("Die gerundete Zahl lautet: " + ergebnis1);

}

public static double berechneLogarithmus(double zahl, double basis) {

return Math.log(zahl) / Math.log(basis);

}

public static double runde (double rund, int nkstelle){

return Math.round(rund * nkstelle);

}
}

Hallo,
ich kann leider nicht helfen, ich bin nicht mehr so im Thema drin, sorry…
Gruß…