Methodenaufruf funktioniert nicht richtig

alissa

Neues Mitglied
Hi! Komme leider selber nicht drauf, was falsch ist. Es ist ein Dreieck mit Koordinaten und es soll Fläche davon berechnet werden, aber die Variable Flaeche ist immer bei 0, obwohl die Methode flaeche aufgerufen würde und den Variablen ein Wert zugewiesen werden soll.




Java:
public class Dreieksfläche {
       public static void einlesen (String [] l, double ax, double ay, double bx, double by, double cx, double cy){
        
        for (int a=0; a<6; a++){
           Scanner scanner = new Scanner(System.in);
           l[a] = scanner.nextLine(); 
           }
           ax = Double.parseDouble(l[0]);
           ay = Double.parseDouble(l[1]);
           bx = Double.parseDouble(l[2]);
           by = Double.parseDouble(l[3]);
           cx = Double.parseDouble(l[4]);
           cy = Double.parseDouble(l[5]);
        }
           
           
        
    
      public static double flaeche (String [] la, double ax, double ay, double bx, double by, double cx, double cy, double Flaeche){
           Dreieksfläche.einlesen(la, ax, ay, bx, by, cx, cy);
           
           Flaeche = (ax*(by - cy) + bx*(cy - ay) + cx*(ay - by))/2;
           return Flaeche;
    }
      public static void main(String[] args) {
        String [] alle = new String[6];
        for (int i = 0; i<6; i++){
            alle[i] = "0";
        }
           
        double ax = 0, ay = 0, bx = 0, by = 0, cx= 0, cy= 0, Flaeche = 0;
        
        Dreieksfläche.flaeche(alle, ax, ay, bx, by, cx, cy, Flaeche);
    }
    
}
 
Zuletzt bearbeitet von einem Moderator:
Code bitte in code tags.

Du hast keine Variable, der du die Fläche zuweist, du versuchst es in den Parameter reinzuschreiben. Außerdem übergibst du der Methode fläche die Flaeche als Parameter, das macht kein Sinn, du willst die Fläche ja berechnen.

Die forschleife in der main macht so auch keinen Sinn.
 
Code bitte in code tags.

Du hast keine Variable, der du die Fläche zuweist, du versuchst es in den Parameter reinzuschreiben. Außerdem übergibst du der Methode fläche die Flaeche als Parameter, das macht kein Sinn, du willst die Fläche ja berechnen.

Die forschleife in der main macht so auch keinen Sinn.
Danke für den Antwort. Das Problem ist, dass die Werte von Variablen in main und in flaeche immer null sind und ich
verstehe nicht warum
Java:
public class Dreieksfläche {
       public static void einlesen (String [] l, double ax, double ay, double bx, double by, double cx, double cy){
     
           for (int a=0; a<6; a++){
                Scanner scanner = new Scanner(System.in);
                l[a] = scanner.nextLine();
           }
           ax = Double.parseDouble(l[0]);
           ay = Double.parseDouble(l[1]);
           bx = Double.parseDouble(l[2]);
           by = Double.parseDouble(l[3]);
           cx = Double.parseDouble(l[4]);
           cy = Double.parseDouble(l[5]);
        
        
        }
        
        
     
 
      public static double flaeche (String [] la, double ax, double ay, double bx, double by, double cx, double cy){
           Dreieksfläche.einlesen(la, ax, ay, bx, by, cx, cy);
           double Flaeche;
           Flaeche = (ax*(by - cy) + bx*(cy - ay) + cx*(ay - by))/2;
           return Flaeche;
      }
 
        public static void main(String[] args) {
        String [] alle = new String[6];
        double ax = 0, ay = 0, bx = 0, by = 0, cx= 0, cy= 0;
        Dreieksfläche.flaeche(alle, ax, ay, bx, by, cx, cy);
     
    }
 
}
 
Zuletzt bearbeitet von einem Moderator:
Ein Beispiel zur Veranschaulichung:
Java:
public static einlesen(double a) {
  a = 3; // <- Zuweisung auf den LOKALEN Parameter 'a'.
  // Soetwas hat KEINE Auswirkung auf den Aufrufer der Methode!
}
public static void main(String[] args) {
  double a = 0;
  einlesen(a); // <- Hier wird nur der WERT 0 als Argument übergeben!
  // <- hiernach ist a IMMER NOCH 0!!!
}
 
Versuche es zunächst ohne Scanner und weise feste Werte den Variablen zu. Die Aussage von Javinner ist nicht unberechtigt. Da sind ganz viele seltsame Konstrukte im Code
 

Zurück
Oben