# Variable Werte aus Methoden übergeben



## David2456 (17. Nov 2015)

Hallo,
ich komme bei dieser Aufgabe bzw. dem übergeben der eingelesenen Variable nicht weiter. Wie schon gesagt bin ich jetzt so weit das ich eine Methode maximum erstellt habe. In der Methode wird theoretisch das Maximum berechnet. Jetzt ist mein Problem das die Methode maximum oder die Variable max nicht gefunden werden kann.
Danke schonmal


----------



## Dukel (17. Nov 2015)

Wenn du dein Quellcode Posten würdest könnte man dir auch helfen. Die Aufgabe alleine hilft nicht wirklich.
Hast du die Methode maximum angelegt?


----------



## strußi (17. Nov 2015)

public static double maximum( double a, double b, double c){
//vergleiche a mit b und a mit c und b mit c gibt dir die lösung
}


----------



## David2456 (17. Nov 2015)

Sorry 
Ja habe ich


----------



## Dukel (17. Nov 2015)

Du kannst den Code hier als Text einfügen (am besten mit den Code Tags), dann kann man diesen Kopieren und sieht diesen gleich.

Wieso übergibst du der Methode "max"?


----------



## David2456 (17. Nov 2015)

Ok ich habe ein bisschen was behoben , aber wieso gibt er mir jetzt aus das _Max nicht initialisiert ist?

```
public class Maximum {

  public static void main(String[] args) {

  Out.println("Bitte geben Sie die erste Zahl ein: ");
  double a = In.readDouble();
 
  Out.println("Bitte geben Sie die zweite Zahl ein: ");
  double b = In.readDouble();
  Out.println("Bitte geben Sie die dritte Zahl ein: ");
  double c = In.readDouble();
  double max = maximum(a , b , c);
  Out.println("Das Maximum ist: " + max);
  }
 
 
  static double maximum(double a, double b, double c)
  {
  double _Max;
  if (a > b && a > c){
  _Max = a;
  } 
 
  if (b > a && b > c){
  _Max = b;
  }
 
  if (c > b && c > a){
  _Max = c; 
  }
  return _Max;
  }
 
  }
```


----------



## Dukel (17. Nov 2015)

Es gibt hier Code Tags. Damit wird hier alles noch lesbarer.
Funktioniert dein Programm denn?
Du hast mit "double _Max;" die Variable nur deklariert und nicht initialisiert. Sollte aber kein Problem sein, das Programm sollte so laufen.


----------



## David2456 (17. Nov 2015)

Eigentlich sollte es laufen. Dachte ich auch, aber es will nicht, weil _Max nit initialisiert ist.


----------



## Dukel (17. Nov 2015)

```
double _Max;
        if (a > b && a > c) {
            _Max = a;
        }

        else if (b > a && b > c) {
            _Max = b;
        }

        else{
            _Max = c;
        }
        return _Max;
```

Du hattest es am Anfang fast richtig und hast es verschlimmert.


----------



## David2456 (17. Nov 2015)

Dankeschön jetzt funktioniert es


----------



## Dukel (17. Nov 2015)

Wenn du am lernen bist: Kannst du erklären, warum es jetzt geht?


----------



## strußi (18. Nov 2015)

du könntest auch in jedem if sagen return a, b oder c; je nach dem was du prüfst
und um eine prüfung zu sparen kannst du sagen

```
if( a....){
  return a;
} else if( b ....){
  return b;
}else{
  return c;
}
```


----------



## Joose (18. Nov 2015)

David2456 hat gesagt.:


> Ok ich habe ein bisschen was behoben , aber wieso gibt er mir jetzt aus das _Max nicht initialisiert ist?
> 
> ```
> static double maximum(double a, double b, double c)
> ...



Es haben dir zwar alle bei der Lösung geholfen, aber nicht wirklich erklärt warum dieser Code nicht funktioniert 
Das Problem ist das du zwar "_Max" deklarierst, aber es gibt die Möglichkeit das es nie initialisiert wird. Und zwar wenn keine der if-Bedingungen zutrifft.
Und uninitialsierte Werte kann man nicht zurückgeben.


----------



## strußi (18. Nov 2015)

sry, du musst den der variabeln _Max einen wert zuweisen, weil bei deiner schreibweise der If-Anweisungen kann es wie @Joose gesagt hat, vorkommen, dass keine If-Bedingung zutrifft und da du kein else hast, besteht für das Programm keine Möglichkeit irgendwoher einen Wert zu bekommen. das kann vorkommen wenn a = b =c ist


----------



## strußi (18. Nov 2015)

du solltest dir überlegen was du in den fällen machst a =b &c<a oder b>a &a =c oder c >a &a =b


----------

