Guten Morgen. Ich habe eine Ausbildung zum IT-Kaufmann begonnen. Zur Übung von Funktionen sollte ein Programm geschrieben werden, das geometrische Werte von Dreieck, Rechteck und Kreis berechnet. Vorgabe war, daß alles in Funktionen ausgelagert wird und die main class nicht mehr als 6 Anweisungen enthalten darf. Ich habe mit Array gearbeitet, so daß nicht für jede Kantenlängen-Eingabe eine Funktion geschrieben werden muss. Leider rechnet mein Programm nur bei Dreieck richtig, bei Rechteck und Kreis kommen falsche Ergebnisse, die dieselbe Ursache zu haben scheinen. Vielleicht kann mal jemand drüberschauen, ich komme nicht weiter. Hier der Code: [Java] import java.io.*;
public class Geometrie {
public static void main(String[] args) throws Exception {
String e1;
double[] x3 = new double[5];
double[] x5 = new double[5];
ausgabe1();
e1 = eingabe1(" \n\t D fuer Dreieck\n\t K fuer Kreis\n\t R fuer Rechteck\n\n\t Eingabe: ");
x3 = eingabe2(e1);
x5 = workOut(x3, x5, e1);
ausgabe2(x5, e1);
}
//------------Funktion fuer die Ausgabe der Programmbeschreibung-------------------------
// --------------------------------------------------
public static void ausgabe1() {
System.out.println("\n\n");
System.out.println(" -------------------------------------------------------------");
System.out.println(" | Mit diesem Programm koennen Sie geometrische Berechnungen |");
System.out.println(" | fuer Dreiecke, Kreise und Rechtecke durchfuehren. Bitte |");
System.out.println(" | beachten Sie die nachfolgenden Eingabeaufforderungen. |");
System.out.println(" -------------------------------------------------------------");
}
//------------Funktion fuer die Eingabe des Buchstabens (D, K oder R) -------------------
// -------------------------------------------------------
public static String eingabe1(String e1) throws IOException{
BufferedReader Tastatur = new BufferedReader(new InputStreamReader(System.in));
String input1;
System.out.print (e1);
input1 = Tastatur.readLine();
System.out.println(" ----------\n");
return input1;
}
//------------Funktion fuer die Eingabe jeweiliger Kantenlaengen bzw. des Radius---------
// ------------------------------------------------------------------
public static double[] eingabe2(String e1) throws IOException{
BufferedReader Tastatur = new BufferedReader(new InputStreamReader(System.in));
String[] x1 = {"erste", "zweite", "dritte"};
String[] x2 = new String[5];
double[] x3 = new double[5];
//-----------------------------------------------------
if ( e1.equalsIgnoreCase( "D" ) ) {
System.out.println(" Berechnung fuer Dreieck\n");
for (int i = 0; i <= 2; i++) {
System.out.print(" Bitte geben Sie die " + x1 + " Kantenlaenge ein:\t");
x2 = Tastatur.readLine();
x3 = Double.parseDouble(x2);
}
}
//------------------------------------------------------
else if ( e1.equalsIgnoreCase( "K" ) ) {
System.out.println(" Berechnung fuer Kreis\n");
for (int i = 0; i < 1; i++) {
System.out.print(" Bitte geben Sie den Radius ein:\t");
x2 = Tastatur.readLine();
x3 = Double.parseDouble(x2);
}
}
//------------------------------------------------------
else if ( e1.equalsIgnoreCase( "R" ) ) {
System.out.println(" Berechnung fuer Rechteck\n");
for (int i = 0; i <= 1; i++) {
System.out.print(" Bitte geben Sie die " + x1 + " Kantenlaenge ein:\t");
x2 = Tastatur.readLine();
x3 = Double.parseDouble(x2);
}
}
//------------------------------------------------------
return x3;
}
//------------Funktion fuer Berechnung Dreieck (Umfang und Flaeche)----------------------
// -----------------------------------------------------
public static double[] berechnungD(double[] x3) {
double[] x5 = new double[3];
x5[0] = x3[0] + x3[1] + x3[2];
x5[1] = x5[0] / 2;
return x5;
}
//------------Funktion fuer Berechnung Kreis (Umfang, Flaeche Durchmesser)---------------
// ------------------------------------------------------------
public static double[] berechnungK(double[] x3) {
double[] x5 = new double[3];
double pi = 3.14159265;
x5[0] = x3[0] * 2;
x5[1] = 2 * pi * x3[0];
x5[2] = pi * x3[0];
return x5;
}
//------------Funktion fuer Berechnung Rechteck (Diagonale, Umfang, Flaeche)-------------
// --------------------------------------------------------------
public static double[] berechnungR(double[] x3) {
double[] x5 = new double[5];
x5[0] = Math.sqrt((x3[0]*x3[0]) + (x3[1] * x3[1]));
x5[1] = (x3[0] * 2) + (x3[1] * 2);
x5[2] = x3[0] * x3[1];
return x5;
}
//------------Funktion fuer die Auswahl der Berechnungsfunktion je nach Buchstabe--------
// -------------------------------------------------------------------
public static double[] workOut(double [] x3, double [] x5, String e1) {
if ( e1.equalsIgnoreCase( "D" ) ) {
x5 = berechnungD(x3);
}
else if ( e1.equalsIgnoreCase( "K" ) ) {
x5 = berechnungD(x3);
}
else if ( e1.equalsIgnoreCase( "R" ) ) {
x5 = berechnungD(x3);
}
return x5;
}
//------------Funktion fuer die Ausgabe der Berechnungen, nach Buchstabe-----------------
// ----------------------------------------------------------
public static void ausgabe2(double [] x5, String e1) {
if ( e1.equalsIgnoreCase( "D" ) ) {
System.out.println("\n");
System.out.println(" Der Umfang des Dreiecks betraegt: " + x5[0]);
System.out.println(" Die Flaeche des Dreiecks betraegt: " + x5[1]);
}
else if ( e1.equalsIgnoreCase( "K" ) ) {
System.out.println("\n");
System.out.println(" Der Durchmesser des Kreises betraegt: " + x5[0]);
System.out.println(" Der Umfang des Kreises betraegt: " + x5[1]);
System.out.println(" Die Flaeche des Kreises betraegt: " + x5[2]);
}
else if ( e1.equalsIgnoreCase( "R" ) ) {
System.out.println("\n");
System.out.println(" Die Diagonale des Rechtecks betraegt: " + x5[0]);
System.out.println(" Der Umfang des Rechtecks betraegt: " + x5[1]);
System.out.println(" Die Flaeche des Rechtecks betraegt: " + x5[2]);
}
}
}
[/code]
public class Geometrie {
public static void main(String[] args) throws Exception {
String e1;
double[] x3 = new double[5];
double[] x5 = new double[5];
ausgabe1();
e1 = eingabe1(" \n\t D fuer Dreieck\n\t K fuer Kreis\n\t R fuer Rechteck\n\n\t Eingabe: ");
x3 = eingabe2(e1);
x5 = workOut(x3, x5, e1);
ausgabe2(x5, e1);
}
//------------Funktion fuer die Ausgabe der Programmbeschreibung-------------------------
// --------------------------------------------------
public static void ausgabe1() {
System.out.println("\n\n");
System.out.println(" -------------------------------------------------------------");
System.out.println(" | Mit diesem Programm koennen Sie geometrische Berechnungen |");
System.out.println(" | fuer Dreiecke, Kreise und Rechtecke durchfuehren. Bitte |");
System.out.println(" | beachten Sie die nachfolgenden Eingabeaufforderungen. |");
System.out.println(" -------------------------------------------------------------");
}
//------------Funktion fuer die Eingabe des Buchstabens (D, K oder R) -------------------
// -------------------------------------------------------
public static String eingabe1(String e1) throws IOException{
BufferedReader Tastatur = new BufferedReader(new InputStreamReader(System.in));
String input1;
System.out.print (e1);
input1 = Tastatur.readLine();
System.out.println(" ----------\n");
return input1;
}
//------------Funktion fuer die Eingabe jeweiliger Kantenlaengen bzw. des Radius---------
// ------------------------------------------------------------------
public static double[] eingabe2(String e1) throws IOException{
BufferedReader Tastatur = new BufferedReader(new InputStreamReader(System.in));
String[] x1 = {"erste", "zweite", "dritte"};
String[] x2 = new String[5];
double[] x3 = new double[5];
//-----------------------------------------------------
if ( e1.equalsIgnoreCase( "D" ) ) {
System.out.println(" Berechnung fuer Dreieck\n");
for (int i = 0; i <= 2; i++) {
System.out.print(" Bitte geben Sie die " + x1 + " Kantenlaenge ein:\t");
x2 = Tastatur.readLine();
x3 = Double.parseDouble(x2);
}
}
//------------------------------------------------------
else if ( e1.equalsIgnoreCase( "K" ) ) {
System.out.println(" Berechnung fuer Kreis\n");
for (int i = 0; i < 1; i++) {
System.out.print(" Bitte geben Sie den Radius ein:\t");
x2 = Tastatur.readLine();
x3 = Double.parseDouble(x2);
}
}
//------------------------------------------------------
else if ( e1.equalsIgnoreCase( "R" ) ) {
System.out.println(" Berechnung fuer Rechteck\n");
for (int i = 0; i <= 1; i++) {
System.out.print(" Bitte geben Sie die " + x1 + " Kantenlaenge ein:\t");
x2 = Tastatur.readLine();
x3 = Double.parseDouble(x2);
}
}
//------------------------------------------------------
return x3;
}
//------------Funktion fuer Berechnung Dreieck (Umfang und Flaeche)----------------------
// -----------------------------------------------------
public static double[] berechnungD(double[] x3) {
double[] x5 = new double[3];
x5[0] = x3[0] + x3[1] + x3[2];
x5[1] = x5[0] / 2;
return x5;
}
//------------Funktion fuer Berechnung Kreis (Umfang, Flaeche Durchmesser)---------------
// ------------------------------------------------------------
public static double[] berechnungK(double[] x3) {
double[] x5 = new double[3];
double pi = 3.14159265;
x5[0] = x3[0] * 2;
x5[1] = 2 * pi * x3[0];
x5[2] = pi * x3[0];
return x5;
}
//------------Funktion fuer Berechnung Rechteck (Diagonale, Umfang, Flaeche)-------------
// --------------------------------------------------------------
public static double[] berechnungR(double[] x3) {
double[] x5 = new double[5];
x5[0] = Math.sqrt((x3[0]*x3[0]) + (x3[1] * x3[1]));
x5[1] = (x3[0] * 2) + (x3[1] * 2);
x5[2] = x3[0] * x3[1];
return x5;
}
//------------Funktion fuer die Auswahl der Berechnungsfunktion je nach Buchstabe--------
// -------------------------------------------------------------------
public static double[] workOut(double [] x3, double [] x5, String e1) {
if ( e1.equalsIgnoreCase( "D" ) ) {
x5 = berechnungD(x3);
}
else if ( e1.equalsIgnoreCase( "K" ) ) {
x5 = berechnungD(x3);
}
else if ( e1.equalsIgnoreCase( "R" ) ) {
x5 = berechnungD(x3);
}
return x5;
}
//------------Funktion fuer die Ausgabe der Berechnungen, nach Buchstabe-----------------
// ----------------------------------------------------------
public static void ausgabe2(double [] x5, String e1) {
if ( e1.equalsIgnoreCase( "D" ) ) {
System.out.println("\n");
System.out.println(" Der Umfang des Dreiecks betraegt: " + x5[0]);
System.out.println(" Die Flaeche des Dreiecks betraegt: " + x5[1]);
}
else if ( e1.equalsIgnoreCase( "K" ) ) {
System.out.println("\n");
System.out.println(" Der Durchmesser des Kreises betraegt: " + x5[0]);
System.out.println(" Der Umfang des Kreises betraegt: " + x5[1]);
System.out.println(" Die Flaeche des Kreises betraegt: " + x5[2]);
}
else if ( e1.equalsIgnoreCase( "R" ) ) {
System.out.println("\n");
System.out.println(" Die Diagonale des Rechtecks betraegt: " + x5[0]);
System.out.println(" Der Umfang des Rechtecks betraegt: " + x5[1]);
System.out.println(" Die Flaeche des Rechtecks betraegt: " + x5[2]);
}
}
}
[/code]