Hallo Java-Programmierer,
Bevor ich die Frage stelle möchte ich betonen: Ich habe Mr. Google und das Forum schon durchsucht, jedoch nichts verständliches gefunden. Also:
Ich schreibe zurzeit an einem Programm, dass mir Wurzeln berechnet. Funktioniert alles ganz gut, ich möchte aber, dass die Ausgabe des Rechenweges etwas schöner ist als:
Also meine Frage: Kann ich irgendwie meinen Rechenweg als Tabelle ausgeben, damit Java die Einrückung automatisch macht oder kann ich das irgendwie manuell?
Methode zieheWurzel:
Methode runde:
Hauptprogramm:
Und die Imports:
Bevor ich die Frage stelle möchte ich betonen: Ich habe Mr. Google und das Forum schon durchsucht, jedoch nichts verständliches gefunden. Also:
Ich schreibe zurzeit an einem Programm, dass mir Wurzeln berechnet. Funktioniert alles ganz gut, ich möchte aber, dass die Ausgabe des Rechenweges etwas schöner ist als:
Java:
Von welcher Zahl soll die Wurzel berechnet werden? (bitte nur positive Zahlen eingeben)
7 //(Input)
Auf wieviele Nachkommastellen soll das Ergebnis gerundet werden?
6 //(Input)
x0: 7.0 y0: 1.0
x1: 4.0 y1: 1.75
x2: 2.875 y2: 2.4347826086956523
x3: 2.654891304347826 y3: 2.636642784032753
x4: 2.64576704419029 y4: 2.6457355780324487
Die Wurzel von 7 ist ungefähr 2.645751
Also meine Frage: Kann ich irgendwie meinen Rechenweg als Tabelle ausgeben, damit Java die Einrückung automatisch macht oder kann ich das irgendwie manuell?
Methode zieheWurzel:
Java:
public static double zieheWurzel(double i, int nks){
// Nötige Variablen werden initiiert.
double a = i;
double b = 1;
int k = 0;
String j = "";
// Schleife, die so lange läuft bis a und b ungefähr gleich sind.
while(runde(a, nks) != runde(b, nks)){
j = Integer.toString(k);
// Diese Zeile gibt mir den Rechenweg aus.
System.out.println("x"+j+": " + a + "" + "\t" + "" + "y"+j+": " + b);
// Berechnung der Wurzel über das Heron-Verfahren.
a = (a+b)/2;
b = i/a;
k++;
}
// Eigentlich unnötig, da a und b jetzt gleich sein müssten, ich fand es aber schöner.
double wurzel = (a+b)/2;
// Rückgabe der Wurzel als double.
return wurzel;
}
Methode runde:
Java:
public static double runde(double zahl, int nks){
BigDecimal zahlGerundet = new BigDecimal(zahl);
String ausgabe = (zahlGerundet.setScale(nks, RoundingMode.HALF_UP)).toString();
return Double.parseDouble(ausgabe);
}
Hauptprogramm:
Java:
static InputStreamReader isr = new InputStreamReader(System.in);
static BufferedReader br = new BufferedReader(isr);
public static void main(String[] args) throws IOException {
// Ein paar Anweisungen an den Anwender.
System.out.println("Wurzelberechnen über das Heronverfahren mit Rechenweg.");
System.out.println("Bitte nur positive Ziffern eingeben, sonst müssen das Programm neustarten. Zum Abschalten einfach eine 0 eintippen.");
System.out.println(" von Linus K. Ehlers");
// Methode, die Einfach nur Absätze einfügt.
tippeEnter(2);
// Variablen werden initiiert.
double zahl = 1;
String zahlenstring = "";
double ausgabe = 0;
// Schleife, damit das Programm nach dem Berechnen der Wurzel wieder von vorne anfangen kann.
while(zahl != 0){
// Entgegennahme der Zahl von der die Wurzel berechnet werden soll.
System.out.println("Von welcher Zahl soll die Wurzel berechnet werden? (bitte nur positive Zahlen eingeben)");
zahlenstring = br.readLine();
zahl = Double.parseDouble(zahlenstring);
// Entgegennahme der Anzahl der Nachkommastellen auf die gerundet werden soll.
System.out.println("Auf wieviele Nachkommastellen soll das Ergebnis gerundet werden?");
int nks = Integer.parseInt(br.readLine());
ausgabe = runde(zieheWurzel(zahl, nks), nks);
tippeEnter(3);
// Ausgabe der Lösung
System.out.println("Die Wurzel von " + zahlenstring + " ist ungefähr " + ausgabe);
tippeEnter(1);
}
// Information an Benutzer, dass Programm sich abschaltet.
tippeEnter(20);
System.out.println("Programm wird abgeschaltet, weil Sie eine 0 eingetippt haben!");
System.out.println("");
System.out.println("von Linus K. Ehlers");
tippeEnter(7);
}
Und die Imports:
Java:
import java.io.*;
import java.util.*;
import java.math.*;
Zuletzt bearbeitet: