# programmfrage (wurzel ziehen)



## unimatrix01 (25. Jan 2004)

hallo,

hab mal wieder eine frage zu einem programm.

ich soll in einer statischen methode eine wurzel von einem wert x ziehen mit der exception, wo bei negativen zahlen eine fehlermeldung ausgegeben wird.

ich habe mir schon das programm verfasst, nur weiß ich nicht ob es so funktioniert, weil ich jetzt momentan nicht ins linux komme. ich bin anfänger und komme mit den methoden und der übergabe der variablen nicht so ganz klar. vielleicht kann mal jemand freundlicherweise das programm durchschauen und mir sagen ob die idee richtig ist?
danke im voraus.



```
public class Wurzel{		     	
	private int x;
	

   public Wurzel (int x) {
    this.x=x;
   }

   public int Wurzelziehen (double x) throws ArithmeticException {
    if(x==-x) {
	throw(new ArithmeticException("Negative Wurzel hat kein reeles Ergebnis!")) }
    b=Math.sqrt(x);
    round(b);
    return b;
   }



	public static void main (string args[]){
		int a = Integer.parseInt(args[0]);

		//Objekterstellung und Aufrufen
		Wurzel w = new Wurzel(a);
		int erg = w.Wurzelziehen;
		System.out.println("Ergebnis: "+ erg);
	}

   }
```


----------



## jptc.org (26. Jan 2004)

also... ich werde dir mal deine variante etwas anpassen, schaue zu und lerne...



```
public class Wurzel{
    public static void main(String args[]) {
        int a = Integer.parseInt(args[0]);
        double erg = Wurzelziehen(a);
        System.out.println("Ergebnis: " + erg);
    }


    public static double Wurzelziehen(int x) throws ArithmeticException {
        if (x < 0) {
            throw (new ArithmeticException("Negative Wurzel hat kein reeles Ergebnis!"));
        }
        double b = Math.sqrt(x);
        return b;
    }
}
```

Also als erstes sind einige Schreibfehler in deinem SourceCode (vergessene ; oder string anstatt String). Zweitens habe ich die Methode zum Wurzelziehen in eine statische Methode umgewandelt, so dass man keine Instanz der Klasse anlegen muss. Der Vergleich x == -x wird immer false liefern, so dass ich auch dies modifiziert habe. Die Methode round() kennt Deine Klasse auch nicht, Du solltest schon eher Math.round() verwendet, als Ergebnis kommt bei double aber ein long zurück.

Achja ich habe die Datentyp leicht geändert, damit ich nicht soviel tippen muss.

Karsten Voigt
http://www.java-performance-portal.org


----------



## unimatrix01 (26. Jan 2004)

ah, danke. ich verstehe die veränderungen.

mir is aber aufgefallen, als ich das programm compilieren wollte, dass der den befehl Math.sqrt() nicht findet. muss ich den erst implementieren?


----------

