samedi 30 mai 2015

2-spaltige Ausgabe als Tabelle ausgeben

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:

Java Code:

  1. Von welcher Zahl soll die Wurzel berechnet werden? (bitte nur positive Zahlen eingeben)
  2. 7 //(Input)
  3. Auf wieviele Nachkommastellen soll das Ergebnis gerundet werden?
  4. 6 //(Input)
  5. x0: 7.0 y0: 1.0
  6. x1: 4.0 y1: 1.75
  7. x2: 2.875 y2: 2.4347826086956523
  8. x3: 2.654891304347826 y3: 2.636642784032753
  9. x4: 2.64576704419029 y4: 2.6457355780324487
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16. 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 Code:

  1. public static double zieheWurzel(double i, int nks){
  2. // Nötige Variablen werden initiiert.
  3. double a = i;
  4. double b = 1;
  5. int k = 0;
  6. String j = "";
  7. // Schleife, die so lange läuft bis a und b ungefähr gleich sind.
  8. while(runde(a, nks) != runde(b, nks)){
  9. j = Integer.toString(k);
  10. // Diese Zeile gibt mir den Rechenweg aus.
  11. System.out.println("x"+j+": " + a + "" + "\t" + "" + "y"+j+": " + b);
  12. // Berechnung der Wurzel über das Heron-Verfahren.
  13. a = (a+b)/2;
  14. b = i/a;
  15. k++;
  16. }
  17. // Eigentlich unnötig, da a und b jetzt gleich sein müssten, ich fand es aber schöner.
  18. double wurzel = (a+b)/2;
  19. // Rückgabe der Wurzel als double.
  20. return wurzel;
  21. }


Methode runde:
Java Code:

  1. public static double runde(double zahl, int nks){
  2.  
  3. BigDecimal zahlGerundet = new BigDecimal(zahl);
  4. String ausgabe = (zahlGerundet.setScale(nks, RoundingMode.HALF_UP)).toString();
  5. return Double.parseDouble(ausgabe);
  6. }


Hauptprogramm:
Java Code:

  1. static BufferedReader br = new BufferedReader(isr);
  2.  
  3.  
  4. public static void main(String[] args) throws IOException {
  5. // Ein paar Anweisungen an den Anwender.
  6. System.out.println("Wurzelberechnen über das Heronverfahren mit Rechenweg.");
  7. System.out.println("Bitte nur positive Ziffern eingeben, sonst müssen das Programm neustarten. Zum Abschalten einfach eine 0 eintippen.");
  8. System.out.println(" von Linus K. Ehlers");
  9. // Methode, die Einfach nur Absätze einfügt.
  10. tippeEnter(2);
  11. // Variablen werden initiiert.
  12. double zahl = 1;
  13. String zahlenstring = "";
  14. double ausgabe = 0;
  15.  
  16. // Schleife, damit das Programm nach dem Berechnen der Wurzel wieder von vorne anfangen kann.
  17. while(zahl != 0){
  18. // Entgegennahme der Zahl von der die Wurzel berechnet werden soll.
  19. System.out.println("Von welcher Zahl soll die Wurzel berechnet werden? (bitte nur positive Zahlen eingeben)");
  20. zahlenstring = br.readLine();
  21. zahl = Double.parseDouble(zahlenstring);
  22. // Entgegennahme der Anzahl der Nachkommastellen auf die gerundet werden soll.
  23. System.out.println("Auf wieviele Nachkommastellen soll das Ergebnis gerundet werden?");
  24. int nks = Integer.parseInt(br.readLine());
  25. ausgabe = runde(zieheWurzel(zahl, nks), nks);
  26. tippeEnter(3);
  27. // Ausgabe der Lösung
  28. System.out.println("Die Wurzel von " + zahlenstring + " ist ungefähr " + ausgabe);
  29. tippeEnter(1);
  30.  
  31. }
  32.  
  33. // Information an Benutzer, dass Programm sich abschaltet.
  34. tippeEnter(20);
  35. System.out.println("Programm wird abgeschaltet, weil Sie eine 0 eingetippt haben!");
  36. System.out.println("");
  37. System.out.println("von Linus K. Ehlers");
  38. tippeEnter(7);
  39. }


Und die Imports:
Java Code:

  1. import java.io.*;
  2. import java.util.*;
  3. import java.math.*;


2-spaltige Ausgabe als Tabelle ausgeben

0 commentaires:

Enregistrer un commentaire