code wurzelfunktion

package analysis;

 

import java.awt.*;

import java.awt.event.*;

import java.applet.*;

import java.lang.*;

import java.lang.Math;

import java.lang.StringBuffer;

 

 

/**

 * Überschrift:   Analysis

 * Beschreibung:

 * Copyright:     Copyright (c) 2002

 * Organisation:  HAW

 * @author Marc Heiligenstein

 * @version 1.0

 */

 

public class Analysis extends Applet implements ActionListener{

 

 

  Button button1;

 

  TextField topTextField, startTextField,sumTextField;

 

  Label l,l2,steps, error,result;

 

  Color blue = new Color(25,0,240),red = new Color(150,0,50),green = new Color(0,100,100);

 

  TextArea tsteps, errort;

 

  String s1 = "";

  String s2 ="";

 

  StringBuffer b1 = new java.lang.StringBuffer();

  StringBuffer b2 = new java.lang.StringBuffer();

 

 

     /**Das Applet initialisieren, hier wird das Layout festgelegt*/

  public void init() {

 

        // Der Layout-Manager

        GridBagLayout gridbag = new GridBagLayout();

        GridBagConstraints c = new GridBagConstraints();

        setFont(new Font( "Helvetica" , Font.PLAIN, 12));

        setLayout(gridbag);

 

        // Label Ausgangswert

        c.weighty = 0.25; // Es wird Platz in vertikaler Richtung geschaffen

        c.weightx = 1.0// in horizontaler Richtung

        l = new Label( "Ausgangswert : " );

        gridbag.setConstraints(l, c);

        add(l);

 

        // Text-Zeile Ausgangswert

        c.weighty =0.25;

        c.gridwidth = GridBagConstraints.REMAINDER;

        topTextField = new TextField( "25" ,10);

        topTextField.setFont(new Font( "Monospaced" ,Font.PLAIN,12));

        gridbag.setConstraints(topTextField, c);

        add(topTextField);

 

        //Label Startwert

        c.gridwidth = 1;

        l2 = new Label( "Startwert der Addition u. 1. Divisor : " );

        gridbag.setConstraints(l2, c);

        add(l2);

 

        // Text-Zeile fuer den Startwert der Addition und Divisor

        startTextField = new TextField( "7" , 10);

        startTextField.setFont(new Font( "Monospaced" ,Font.PLAIN,12));

        c.gridwidth = GridBagConstraints.REMAINDER;

        gridbag.setConstraints(startTextField, c);

        add(startTextField);

 

        // Der Knopf

        button1 = new Button( "GO" ); //Initialisieren mit Beschriftung

        button1.setBackground(blue); // Hier kommt die Farbe ins Spiel

        c.anchor = GridBagConstraints.CENTER; // in die Mitte mit dem Knopf

        gridbag.setConstraints(button1, c);

        add(button1);

        //Wenn der Knopf gedrückt wird

        button1.addActionListener(new java.awt.event.ActionListener(){

        public void actionPerformed(ActionEvent e) {

        button1_actionPerformed(e);

          }

         });

 

 

        // Label Ergebnis

        c.gridwidth = 1; // auf Default-Wert zurückgesetzt

        steps = new Label( "Zwischenwert nach jedem Durchgang : " );

        gridbag.setConstraints(steps, c);

        add(steps);

 

        // Label Fehler

        c.gridwidth = GridBagConstraints.REMAINDER; // die letzte Componente in der Reihe

        error = new Label( "Fehler verglichen mit Wurzel-Funktion : " );

        gridbag.setConstraints(error, c);

        add(error);

 

        // Text-Feld fuer die Ausgabe der Durchgaenge

        c.gridwidth = 1;

        tsteps = new TextArea(s1,5,35,1);

        tsteps.setEditable(false);

        tsteps.setForeground(blue); // Farbe für den Text

        gridbag.setConstraints(tsteps, c);

        add(tsteps);

 

        // Text-Feld fuer die Ausgabe des Fehlers

        c.gridwidth = GridBagConstraints.REMAINDER; // die letzte Componente in der Reihe

        errort = new TextArea(s2,5,35,1);

        errort.setEditable(false);

        errort.setForeground(red); // die Textausgabe wird farbig

        gridbag.setConstraints(errort, c);

        add(errort);

 

        // Label Java-Wurzelfunktion

        c.gridwidth = GridBagConstraints.REMAINDER;

        result = new Label( "Ergebnis der Wurzelfunktion von Java : " );

        gridbag.setConstraints(result, c);

        add(result);

 

        // Text-Zeile zur Ausgabe des Ergebnisses der Java-Funktion

        sumTextField = new TextField(20);

        sumTextField.setEditable(false);

        sumTextField.setForeground(green);

        gridbag.setConstraints(sumTextField, c);

        add(sumTextField);

 

  }

 

// Wird benötigt, da die actionPerformed()-Methode eine innere Klasse ist

public void actionPerformed(ActionEvent l){}

 

// Wenn der Knopf gedrückt wird werden die Werte eingelesen und die Mathematik "angeworfen"

 

   void button1_actionPerformed(ActionEvent e) {

 

 

    double stat = java.lang.Double.parseDouble(topTextField.getText());    // Von diesem Wert wird die Wurzel gesucht *

 

    double temp = java.lang.Double.parseDouble(startTextField.getText());  // Startwert der Addition und Divisor*

 

    double wurzel = Math.sqrt(stat); // Hier wird die Wurzel von Java für Vergleichszwecke ausgerechnet

 

    if(stat >= 0 && temp > 0){      // Alle positiven Zahlen + 0, auch der Startwert der Addition muss positiv sein

   double bug = 0;                          //an diese Variable wird der Fehler gebunden

    double result = 999999998;     // Ergebnis

    double previus = 999999999;    //In dieser Variabel wird der Vorgängerwert der aktuellen Berechnung gespeichert

 

for (int i=1; previus > result && result > 0.0; i++){

    previus = result; // das aktuelle Ergebnis wird an die Variable für den Vorgänger gebunden

    result = (temp + stat / temp)/ 2; // Berechnung

    temp = result; // das aktuelle Ergebnis wird als Anfangswert und Divisor der Funktion gesetzt

 

 

     if(previus > result){

 

     s1 = new String("\n" + i + ". Durchgang: " + Double.toString(result));

 

     // Berechnung der Differenz des jeweiligen Durchgangs zum Ergebnis der Java-Wurzelfunktion.

 

     if(wurzel > 0.0){

      bug = result - wurzel;

      s2 = new String("\n\t" + Double.toString(bug));

      }

     // Bei der 0 ist das Ergebnis = Fehler, deswegen keine Ausgabe, dafür Text.

 

          else{

         s2 = new String( "\n\t" + "Ergebnis = Fehler");

       }

 

       // Nach jedem Durchgang werden die Strings in die Buffer gelesen.

 

       b1.append(s1);

       b2.append(s2);

     }

    }

 

 

  // Nachdem die Schleife beendet wurde wird das Ergebnis von den TextAreas angezeigt.

 

   tsteps.setText((b1.toString()));

   errort.setText((b2.toString()));

 

 // Ausgabe des Ergebnis der Java-Wurzelfunktion

 

   sumTextField.setText( " " + Double.toString(wurzel));

 

// Anschließend werden die Buffer geleert, TextArea stellt keine Methode zum Löschen zur Verfügung.

   b1.delete(0,b1.length());

   b2.delete(0,b2.length());

 

  }

  // Dieser Text erscheint wenn einer der gewählten Werte negativ ist, die Funktion wird nicht durchlaufen.

 

   else{

 

   s1 = new String( "\n Ausgangswert muss >= 0 sein" );

   tsteps.setText(s1);

 

   s2 = new String( "\n Startwert u. Divisor muss > 0 sein" );

   errort.setText(s2);

 

   sumTextField.setText( " So geiht dat nich" );

   }

  }

}