44 lines
1.6 KiB
Java
44 lines
1.6 KiB
Java
import java.util.Scanner;
|
|
/**
|
|
* Klasse zum Berechnen von Winkeln eines Dreiecks
|
|
*/
|
|
public class Winkel {
|
|
|
|
public static Scanner console = new Scanner(System.in);
|
|
|
|
public static void main(String[] args) {
|
|
System.out.println("Dieses Programm errechnet die drei Winkel eines Dreiecks.");
|
|
|
|
double sideA = getSideInput("a");
|
|
double sideB = getSideInput("b");
|
|
double sideC = getSideInput("c");
|
|
|
|
System.out.println("alpha = " + determineAngle(sideA, sideB, sideC));
|
|
System.out.println("beta = " + determineAngle(sideB, sideC, sideA));
|
|
System.out.println("gamma = " + determineAngle(sideC, sideA, sideB));
|
|
}
|
|
/**
|
|
* Druckt die Eingabeaufforderung fuer eine bestimmte Seite und gibt naechsten
|
|
* eingegebenen Double zurueck
|
|
*/
|
|
public static double getSideInput(String sidename) {
|
|
System.out.print("Bitte Seitenlänge " + sidename + " eingeben: ");
|
|
return console.nextDouble();
|
|
}
|
|
|
|
/**
|
|
* Nutzt den Kosinussatz um aus drei Seitenlaengen den Winkel alpha zwischen b und c zu errechnen
|
|
* Rueckgabewert ist in Gradmass und mit round1 auf eine Nachkommastelle gerundet
|
|
*/
|
|
public static double determineAngle(double a, double b, double c) {
|
|
return round1(Math.acos((b * b + c * c - a * a)/(2 * b * c)) / Math.PI * 180);
|
|
}
|
|
|
|
/** Rundet eine gegebene Zahl auf eine Nachkommastelle. */
|
|
public static double round1(double value) {
|
|
if (Double.isNaN(value)) return value;
|
|
if (Double.isInfinite(value)) return value;
|
|
return Math.round(value * 10) / 10.0;
|
|
}
|
|
}
|