Java :: Aufgabe #177 :: Lösung #2

2 Lösungen Lösungen öffentlich
#177

Wurzel ziehen mit Intervallschachtelung

Anfänger - Java von Felix - 11.07.2017 um 21:30 Uhr
Schreibe eine Methode die aus einer Zahl die Wurzel zieht, benutze dafür die Intervallschachtelung.
#2
vote_ok
von nOrdan (1160 Punkte) - 21.07.2019 um 21:43 Uhr
Main-Klasse:

Quellcode ausblenden Java-Code


import Methodensammlung.Methoden;

import java.math.BigDecimal;

import java.io.FileWriter;

import java.io.BufferedWriter;

import java.io.File;

import java.io.IOException;

/**
 * Schreibe eine Methode die aus einer Zahl die Wurzel zieht, benutze dafür die Intervallschachtelung. 
 * Prinzip der Intervallverschachtelung: http://www.schule-studium.de/Mathe/Intervallschachtelung.html
 * 
 * @author (nOrdan) 
 * @version (21.07.2019)
 */

public class Verschachtelung
{

    Methoden m = new Methoden();

    public static void main(String [] args) throws IOException
    {
        Verschachtelung v = new Verschachtelung();
        v.inputs();
    }

    private void inputs() throws IOException
    {
        boolean valid1 = false;
        int n = 0;
        int stellen = 0;
        while (valid1 == false)
        {
            String input1 = m.userInput("Geben Sie die Zahl ein aus welcher die Wurzel gezogen werden soll: ");
            m.errorIntInput(input1);
            try
            {
                n = m.parseInt(input1);
                valid1 = true;
            }
            catch(Exception e)
            {
                m.errorMessage("Keine Zahl","Ungültige Eingabe");
            }
        }
        valid1 = false;
        while (valid1 == false)
        {
            String input1 = m.userInput("Wieviele Nachkommastellen sollen berechnet werden? Bedenken Sie, umso mehr Nachkommastellen sie verlangen, umso länger dauert die Berechnung!");
            m.errorIntInput(input1);
            try
            {
                stellen = m.parseInt(input1);
                valid1 = true;
            }
            catch(Exception e)
            {                                        
                m.errorMessage("Keine Zahl","Ungültige Eingabe");
            }
        }
        berechnung(n,stellen);
    } 

    public void berechnung(int n,int stellen) throws IOException
    {        
        BigDecimal entfernung = new BigDecimal("1");
        BigDecimal kommazahl = new BigDecimal("1");
        for (int i = 0; i < stellen+1; i++)
        {
            while (((kommazahl.pow(2)).compareTo(BigDecimal.valueOf(n))) == -1)
            {
                kommazahl = kommazahl.add(entfernung); 
            }
            kommazahl = kommazahl.subtract(entfernung); 
            entfernung = entfernung.divide(BigDecimal.valueOf(10));
        }
        BufferedWriter out = new BufferedWriter(new FileWriter(new File("GezogeneWurzel.txt")));
        out.write(kommazahl.toString());
        out.close();
        m.informationMessage("Ihre Kommazahl ist in der Datei GezogeneWurzel.txt im Ordner dieses Programmes gespeichert" , "Ergebnis");
    }
}



Methoden aus meiner Methodensammlung:

Quellcode ausblenden Java-Code

public void errorMessage(String message,String errorName)
    {
        JOptionPane.showMessageDialog(null,message,errorName,JOptionPane.ERROR_MESSAGE); 
    }
    
    public void informationMessage(String message,String informationName)
    {
        JOptionPane.showMessageDialog(null,message,informationName,JOptionPane.INFORMATION_MESSAGE);
    }

public void errorIntInput(String input)
    {
        if (input == null) 
        {
            System.exit(0); //Drückt der User auf abbrechen wird null zurück gegeben und das Programm wird beendet
        }
        else if (input.isEmpty() == true)
        {
            
        }
    }

public int parseInt(String input)
    {
        return Integer.parseInt(input);
    }

public String userInput(String message)
    {
        return JOptionPane.showInputDialog(message);
    }

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1816160

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.