# if Statement



## ellegance (23. Jul 2015)

Implementieren Sie die Methode max der Klasse Helferlein im vorgegebenen Code-Gerüst.
Die Methode max gibt die Größere der beiden natürlichen Zahlen a und b zurück.

Implementieren Sie die Methode max der Klasse Helferlein. Für die Berechnung werden über den Aufruf in der Main-Methode die beiden Werte a=12 und b=43 vorgegeben.
Es soll keine Eingabe der beiden Werte über die Tastatur erfolgen!

```
import java.io.*;

class Helferlein {
  public int max (int a, int b) {
    int m = a, n = b, g;
    if ( m < n) {
      g = m;
      m = n;
      n = g;
    }
    return m; //m ist die groessere Zahl und wird zurueckgegeben
  }
}

public class Starter {
  public static void main(String[] args) {
    Helferlein h = new Helferlein();
    System.out.println("Ausgabe: "+h.max(12,43));
  }
}
```
Hallo, ich habe mal eine Frage zu diesem Code. was wird in der if schleife gemacht?

m=a und n=b also m die größere Zahl und n die kleinere? wenn die größere Zahl kleiner ist als die kleinere dann? aber das geht doch schon mal nicht? :S habe ich dort ein denkfehler? Ich verstehe nicht warum man alle Variablen miteinander gleichsetzt. Übrigens, das ist die Musterlösung zu der Aufgabe.

LG


----------



## stg (23. Jul 2015)

Geh das doch mal Schritt für Schritt mit Papier und Stift durch, dann siehst du recht schnell, was genau da passiert. Da wird nicht einfach "alles gleichgesetzt".


----------



## Flown (23. Jul 2015)

Das "=" heißt nicht das links und rechts gleich gesetzt wird, sondern es bedeutet das die rechte Seite der Linken zugeordnet wird. Des Weiteren gibt es keine "if-Schleife", sondern nur eine if-Anweisung.

Zeig doch mal die Aufgabenstellung her, denn das ist eine schlechte "Lösung".


----------



## ellegance (23. Jul 2015)

Hallo. Danke für die Antworten die Aufgabenstellung  steht ja oben drauf. Im Gerüst  war alles vorgegeben  nur die if Anweisung  nicht. Ich schaue es mir heute abend noch  genauer an. Eine Frage  ist mir gerade  eingefallen,  was ist eigentlich  dieses g? a und b bzw m und n sind integers  und g?

LG


----------



## Tom299 (24. Jul 2015)

Eine einfache und verständliche Lösung wäre:

```
public int max (int a, int b) {
          if (a > b) {
              return a;
          }
          return b;
      }
```

oder ohne if-statement:

```
public int max2(int a, int b) {
          return a > b ? a : b;
      }
```

Deine Musterlösung scheint eher zum Verwirren gedacht zu sein, man braucht nicht mal einen Wert zwischenzuspeichern, um das Maximum herauszufinden.


----------



## VfL_Freak (24. Jul 2015)

Moin,



Tom299 hat gesagt.:


> Eine einfache und verständliche Lösung wäre:
> 
> ```
> public int max (int a, int b) {
> ...


Deine aber leider auch - was ist denn wenn a und b gleich sind ?? 

Gruß Klaus


----------



## Dompteur (24. Jul 2015)

VfL_Freak hat gesagt.:


> Deine aber leider auch - was ist denn wenn a und b gleich sind ??


Das wird doch korrekt behandelt.
Wenn a==b, dann ist es auch egal, ob a oder b zurückgegeben wird ;-)


----------

