Variable Werte aus Methoden übergeben

David2456

Aktives Mitglied
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
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    44,4 KB · Aufrufe: 19

Dukel

Top Contributor
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

Top Contributor
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
}
 

Dukel

Top Contributor
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

Aktives Mitglied
Ok ich habe ein bisschen was behoben , aber wieso gibt er mir jetzt aus das _Max nicht initialisiert ist?
Java:
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;
  }
 
  }
 
Zuletzt bearbeitet von einem Moderator:

Dukel

Top Contributor
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.
 

Dukel

Top Contributor
Java:
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.
 

strußi

Top Contributor
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
Code:
if( a....){
  return a;
} else if( b ....){
  return b;
}else{
  return c;
}
 

Joose

Top Contributor
Ok ich habe ein bisschen was behoben , aber wieso gibt er mir jetzt aus das _Max nicht initialisiert ist?
Java:
  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;
  }
  }

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

Top Contributor
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
 

Neue Themen


Oben