Java, programmieren

Hallo, es geht um folgende 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 habe das Programm soweit fertig, jedoch bekomme ich unverständliche Ausgaben und ich weiß nicht aus welchem Grund. ich hoffe ihr könnt mir weiterhelfen.

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);

}
}

Also die erste Funktion versteh ich nicht ganz, weiß nicht was mit

Logarithmus der Zahl / Logarithmus der beliebigen Basis!

bezweckt werden soll.

Du hast da in der ersten Funktion einen Fehler

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!“);

Du parset hier wieder eingabe1, müsste eingabe 2 sein

basis = Double.parseDouble(eingabe1);
if (basis == ‚e‘) {
basis = 2.718281828;
}

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

return Math.round(rund * nkstelle);

}
}

Warum rechnest du hier die Zahl*der nullstellen? Das ergibt doch keinen Sinn.
Wenn ich rund = 4,38283 und nkstelle=2 habe, dann rechnest du 4,38283*2=8,76566
und das dann aufgerundet ergibt dann 9

Es ist schon spät und ich hab jetzt mal ein bisschen rum probiert, jedenfalls ging es bei mir. Vll ist noch ein Fehler drin, aber ich hätte es so ungefähr gemacht:

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

for(int i = 0; i 0;i–)//Und damit du sie wieder hin bekommst
rund = rund/10;

String rg = Double.toString(rund);
for(int i = 0; i

Hallo, vielen Danke für die Antwort. Ist zwar etwas komplizierter zu verstehen als meine Lösungsmöglichkeit, aber immerhin habe ich es nach mehrmaligen durchgehen verstanden :smile: