# Winkel berechnen lassen



## Nerospeed (25. Okt 2009)

Hallo Leute,

ich habe versucht mir mit JAVA ein kleines Programm zu schreiben, welches mich nach den drei Seiten eines Dreiecks fragt und mir dann die Winkel ausgibt. zB bei a,b,c= 5 macht er mir die 60°. Bei anderen gibt er bei gamme zB 0 aus.
Wo liegt mein fehler, ich finde ihn einfach nicht. Welze mich schon den halben Tag durch :rtfm: aber finde nix gescheites.
Hier mal der code

```
import java.util.Scanner;
public class winkel_berechnen {

public static void main(String[] args) {
	Scanner console = new Scanner(System.in);
	
	// Eingabe in die Console
	System.out.print("Bitte geben Sie die Länge der Seite 'a' an:");
	double a = console.nextDouble();
	System.out.print("Bitte geben Sie die Länge der Seite 'b' an:");
	double b = console.nextDouble();
	System.out.print("Bitte geben Sie die Länge der Seite 'c' an:");
	double c = console.nextDouble();
	
	// Berechnung der Winkel
	double alpha	= 	Math.acos((Math.pow(a, 2)) - (Math.pow(b, 2)) - (Math.pow(c, 2)) / (-2 * b * c))* 180/Math.PI;
	double beta 	= 	Math.acos((Math.pow(b, 2)) - (Math.pow(c, 2)) - (Math.pow(a, 2)) / (-2 * c * a))* 180/Math.PI;
	double gamma	= 	Math.acos((Math.pow(c, 2)) - (Math.pow(a, 2)) - (Math.pow(b, 2)) / (-2 * a * b))* 180/Math.PI;
	
	
	// Ausgabe in der Console
	System.out.print("Der Winkel a beträgt:");
	System.out.println((double)alpha);
	System.out.print("Der Winkel b beträgt:");
	System.out.println((double)beta);
	System.out.print("Der Winkel c beträgt:");
	System.out.println((double)gamma);
}

}
```
Danke MfG nero


----------



## 0x7F800000 (25. Okt 2009)

1) benutze Math lieber mit static import:

```
import static java.lang.Math.*;
...
```

2) Benutze niemals Math.pow bei ganzzahligen exponenten, erst recht nicht bei 2, dafür ist es nicht gedacht.

3) Fummele nicht mit 180 und 2PI herum: dafür gibt's das: Math (Java Platform SE 6)

4) imho ist die klammerung i-wie falsch...


----------



## Nerospeed (25. Okt 2009)

Jo klammer gerade richtig gemacht, hatte den Text code falsch Kopiert.


```
import static java.lang.Math.*;
```
 kennt mein eclipse nicht. Er schlägt mir vor den Eintrag zu löschen :bahnhof:

Ja wie genau sollte ich das toDegrees.

Sorry für die Fragen aber ich bin ein totaler Anfänger.

Danke


----------



## eRaaaa (25. Okt 2009)

Nerospeed hat gesagt.:


> Ja wie genau sollte ich das toDegrees.



so wie die anderen auch

```
double beta = toDegrees(acos((a * a + c * c - b * b)
				/ (2 * a * c)));
```

irgendwie so ?!


----------



## Nerospeed (25. Okt 2009)

Oky, 

```
import java.util.Scanner;
public class winkel_berechnen {

public static void main(String[] args) {
	Scanner console = new Scanner(System.in);
	
	// Eingabe in die Console
	System.out.print("Bitte geben Sie die Länge der Seite 'a' an:");
	double a = console.nextDouble();
	System.out.print("Bitte geben Sie die Länge der Seite 'b' an:");
	double b = console.nextDouble();
	System.out.print("Bitte geben Sie die Länge der Seite 'c' an:");
	double c = console.nextDouble();
	
	// Berechnung der Winkel
	double alpha	= 	Math.toDegrees(Math.acos((a * a) - (b * b) - (c * c) / (-2 * b * c)));
	double beta 	= 	Math.toDegrees(Math.acos((b * b) - (c * c) - (a * a) / (-2 * c * a)));
	double gamma	= 	Math.toDegrees(Math.acos((c * c) - (a * a) - (b * b) / (-2 * a * b)));
	
	
	// Ausgabe in der Console
	System.out.print("Der Winkel a beträgt:");
	System.out.println((double)alpha);
	System.out.print("Der Winkel b beträgt:");
	System.out.println((double)beta);
	System.out.print("Der Winkel c beträgt:");
	System.out.println((double)gamma);
}

}
```
bei der eingabe von a,b,c=5 gibt er mir die 60° aus. Wenn ich aber nun 

```
Bitte geben Sie die Länge der Seite 'a' an:7
Bitte geben Sie die Länge der Seite 'b' an:6
Bitte geben Sie die Länge der Seite 'c' an:7
Der Winkel a beträgt:NaN
Der Winkel b beträgt:NaN
Der Winkel c beträgt:64.6230664748477
```
gibt er mir bei den a und b NaN aus??


----------



## eRaaaa (25. Okt 2009)

kann es sein dass deine formel einfach falsch ist?


```
double alpha = toDegrees(acos((b * b + c * c - a * a)
				/ (2 * b * c)));
		double beta = toDegrees(acos((a * a + c * c - b * b)
				/ (2 * a * c)));
		double gamma = toDegrees(acos((a * a + b * b - c * c)
				/ (2 * a * b)));
```

geht bei mir ?!


----------



## 0x7F800000 (25. Okt 2009)

Nerospeed hat gesagt.:


> ```
> import static java.lang.Math.*;
> ```
> kennt mein eclipse nicht. Er schlägt mir vor den Eintrag zu löschen :bahnhof:


Dazu müsste so vieles kaputt sein, dass es praktisch ausgeschlossen ist...


Nerospeed hat gesagt.:


> gibt er mir bei den a und b NaN aus??


Zum einen sind die Klammer immer noch falsch gesetzt, zum anderen sehen die formeln immer noch nicht so wie hier aus. :autsch:


----------



## Nerospeed (25. Okt 2009)

Hallo,

also wegen dem Import schaue ich morgen mal und zur Berechnung - es KLAPPT
Vielen danke für eure Hilfe, die Formel stimmt nicht, obwohl ich mit einen Taschenrechner mit dieser rechnen konnte.
Hier das fertige Produkt

```
import java.util.Scanner;
public class winkel_berechnen {

public static void main(String[] args) {
	Scanner console = new Scanner(System.in);
	
	// Eingabe in die Console
	System.out.print("Bitte geben Sie die Länge der Seite 'a' an:");
	double a = console.nextDouble();
	System.out.print("Bitte geben Sie die Länge der Seite 'b' an:");
	double b = console.nextDouble();
	System.out.print("Bitte geben Sie die Länge der Seite 'c' an:");
	double c = console.nextDouble();
	
	// Berechnung der Winkel
	double alpha	= 	(Math.toDegrees(Math.acos((b * b + c * c - a * a)/ (2 * b * c))));
	double beta 	= 	(Math.toDegrees(Math.acos((a * a + c * c - b * b)/ (2 * a * c))));
	double gamma	= 	(Math.toDegrees(Math.acos((a * a + b * b - c * c)/ (2 * a * b))));
	
	// Ausgabe in der Console
	System.out.print("Der Winkel alpha beträgt: ");
	System.out.println((double)alpha +"°");
	System.out.print("Der Winkel beta beträgt:  ");
	System.out.println((double)beta +"°");
	System.out.print("Der Winkel gamme beträgt: ");
	System.out.println((double)gamma +"°");
}

}
```

Gruß Nero


----------

