Java Methoden "Parameter" Problem

Hallo....
muss für die Uni ein Programm bis morgen fertigstellen aber ich komme einfach nicht auf die Lösung .....
Kann mit jemand helfen das Programm lauffähig zu gestalten? Hier mein Programm bisher.... (Aufgabenstellung im Anhang!)


Java:
import java.util.Scanner;

public class Functionality {

    public static void main(String[] args) {
        Scanner scanA = new Scanner(System.in);
        Scanner scanB = new Scanner(System.in);
        Scanner scanC = new Scanner(System.in);
            
        System.out.println("Geben Sie den Wert a ein: ");
        double a = scanA.nextDouble();
        
        System.out.println("Geben Sie den Wert b ein: ");
        double b = scanB.nextDouble();
        
        System.out.println("Geben Sie den Wert c ein: ");
        double c = scanC.nextDouble();
        
        System.out.println(istRechtwinkligesDreieck(a,b,c));
    }
    
  



    public static boolean istRechtwinkligesDreieck(double a, double b, double c) {
        
        double hypo = 0;  
        
        if(a<=b && b<c) {   
            hypo = c;
            if((a*a)+(b*b) == (hypo*hypo)) {
                    
            }
                
            else {
                return false;
            }
         if(b<=c && c<a) {        
            hypo = a;
            if((b*b)+(c*c) == (hypo*hypo)) {
                return true;
            }
        }
            else {
                return false;
            }
        
        {
            hypo = b;
            if((a*a)+(c*c) == (hypo*hypo)) {
                return true;
            }
        }
             {
                return false;
            }

        }
        return false; 
        
    }
    
}
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
Anstatt mit etlichen if-else Bedingungen rumzuspielen, sortierst du deine Inputwerte am besten.
Java:
    public static boolean istRechtwinkligesDreieck(double a, double b, double c) {
        double[] d = new double[]{a, b, c};
        Arrays.sort(d);

        //...
    }
Die Hypotenuse steht dann an letzter Stelle. Und dann wirds auf einmal ganz leicht ;)

Und bitte benutze nicht drei Scanner für drei Eingabewerte. Einer reicht vollkommen.
 
Anstatt mit etlichen if-else Bedingungen rumzuspielen, sortierst du deine Inputwerte am besten.
Java:
    public static boolean istRechtwinkligesDreieck(double a, double b, double c) {
        double[] d = new double[]{a, b, c};
        Arrays.sort(d);

        System.out.println(Arrays.toString(d));

        //...
    }
Die Hypotenuse steht dann an letzter Stelle. Und dann wirds auf einmal ganz leicht ;)


Würdest du mir das gesamte Programm einmal exemplarisch aufschreiben (kannst ja meine Teile kopieren soweit die richtig sind) damit ich weiß ob das mit den übergabewerten und dem anderen code stimmt? :x
 
Dein Code ist viel zu lang und komplex, den würde ich ehrlich gesagt verwerfen.
In meinem Beispiel fehlt nur noch eine Zeile zu der Lösung.

Wenn du drei Seiten eines Dreiecks hast, dann hast du ja schon richtig erkannt, dass die Hypotenuse die längste Seite darstellt.
Wenn du deine drei Eingabewerte in ein Array packst und dieses aufsteigend sortierst, dann ist die größte Zahl (die Hypotenuse) am letzten Index vertreten.
Also:
d[0] = Kathete 1.
d[1] = Kathete 2.
d[2] = Hypotenuse.

Jetzt nur noch Pythagoras anwenden und du hast deine Lösung.
 
Es geht mir mehr um die methoden und die klassen mit Rückgabewerten... als um die Berechnung
Also wo zb. ich die public static istRechwinkliges... hin schreibe. Wo ich die aufrufe. welche parameter wo hin etc...
 
Dein Code beinhaltet sehr sehr viele syntaktische Fehler .. nutzt du eine IDE oder schreibst du das ganze einfach in einem Editor? Auf jeden Fall solltest du deinen Code mal ordentlich formatieren. (BTW: Code im Forum bitte in Code Tags [code=Java]Dein Code[/code] setzen)
Meiner Meinung nach solltest du deine Lösung nicht verwerfen. Mag sein, dass es nicht die eleganteste Lösung ist, dennoch solltest du definitiv in der Lage sein, die Fehler in deinem Programm zu beheben.
Weiterhin fehlt sowohl bei deiner Lösung, als auch bei der Lösung von @Tarrew die Überprüfung auf ungültige Eingaben.
 
klassen mit Rückgabewerten
Klassen mit Rückgabewerten? :rolleyes:

Deine Aufrufe als solches sind ja eigentlich richtig. Dir fehlen wirklich nur 3 Sachen zum Ziel, die aber alle schon oben erwähnt sind:
- ein Scanner, nicht 3
- Hypotenuse ist die längste der 3 Seiten, du solltest die vielen if und else loswerden
- ungültige Werte (negative Werte, 0, double-Datentyps-Grenzen)
 
Dein Code ist viel zu lang und komplex, den würde ich ehrlich gesagt verwerfen.
In meinem Beispiel fehlt nur noch eine Zeile zu der Lösung.

Wenn du drei Seiten eines Dreiecks hast, dann hast du ja schon richtig erkannt, dass die Hypotenuse die längste Seite darstellt.
Wenn du deine drei Eingabewerte in ein Array packst und dieses aufsteigend sortierst, dann ist die größte Zahl (die Hypotenuse) am letzten Index vertreten.
Also:
d[0] = Kathete 1.
d[1] = Kathete 2.
d[2] = Hypotenuse.

Jetzt nur noch Pythagoras anwenden und du hast deine Lösung.



es soll aber egal sein an welcher Stelle die Hypotenuse stehen soll... deswegen auch die if´s... verstehst du?
 
Wobei ein komplettes sortieren unnötig ist, da ja lediglich der maximale Wert benötigt wird. Daher reicht es ja vollkommen aus, drei Variablen für Hypotenuse und die zwei Katheten zu haben um dann erst a und b zu prüfen: kleinerer Wert kommt in die erste Kathete und größerer Wert in die Hypotenuse. Danach Hypotenuse und c prüfen um dann ggf. den Wert aus hypotenuse in die 2. kathete zu schreiben eher c in die hypotenuse kommt (ansonsten ist halt c in die 2. kathete zu schreiben).

Aber ein Dreieck hat drei Seiten, die alle einfach nur eine Länge haben. Daher gefällt mir das Speichern in einem Array deutlich besser als in einzelnen Variablen. Zumal die Namen der Variablen irreführend sein können, denn nur weil ich eine Seitenlänge in hypotenuse und die beiden anderen Seiten in kathete1 und kathete2 speichere, sind da ja keine Hypothenuse oder Katheten. Die Namen sind nur zutreffend, wenn es ein rechtwinkliges Dreieck ist....

Das wären so meine Gedanken dazu....
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben