# Zahlen vergleichen, Problem



## VictorS (9. Dez 2011)

Hallo Leute,

Ich hab da mal ne Frage an die, die Java schon was besser können... Und zwar versuche ich gerade ein einfaches Programm zu entwickeln, mit dem man 3 Zahlen nach ihrer Größe vergleichen kann. Das Programm mit 2 Zahlen hab ich ohne Probleme hinbekommen, aber hier stelle ich fest, dass es etwas komplizierter ist als mit 2 Zahlen... Hier mein bisheriger Versuch:


```
public class Vergleichen2 extends Zahlen{
  public static void main(String[]args){
    int a=1;
    int b=2;
    int c=3;
    System.out.println("Dieses Programm wird maximal 3 Zahlen für Sie vergleichen, geben Sie die Zahlen dafür einfach in den Quelltext ein.");
    System.out.println("1.Zahl = " +a);
    System.out.println("2.Zahl = " +b);
    System.out.println("3.Zahl = " +c);
    if (a>b>c) System.out.println("Die Zahl "+a+" ist größer als die Zahl "+b+". Die Zahl "+b+" ist aber größer als die Zahl "+c+".");
    if (a>c>b) System.out.println("Die Zahl "+a+" ist größer als die Zahl "+c+". Die Zahl "+c+" ist aber größer als die Zahl "+b+".");
    if (a>b==c) System.out.println("Die Zahl "+a+" ist größer als die Zahlen "+b+" und "+c+", die gleich groß sind.");
    if (a==c>b) System.out.println("Die Zahlen "+a+" und "+c+" sind gleich groß und größer als die Zahl "+b+".");
    if (a==b>c) System.out.println("Die Zahlen "+a+" und "+b+" sind gleich groß und größer als die Zahl "+c+".");
    if (a==b==c) System.out.println("Die Zahlen "+a+", "+b+" und "+c+" sind gleich groß.");
    if (b>a>c) System.out.println("Die Zahl "+b+" ist größer als die Zahl "+a+". Die Zahl "+a+" ist aber größer als die Zahl "+c+".");
    if (b>c>a) System.out.println("Die Zahl "+b+" ist größer als die Zahl "+c+". Die Zahl "+c+" ist aber größer als die Zahl "+a+".");
    if (b>a==c) System.out.println("Die Zahl "+b+" ist größer als die Zahlen "+a+" und "+c+", die gleich groß sind.");
    if (b==c>a) System.out.println("Die Zahlen "+b+" und "+c+" sind gleich groß und größer als die Zahl "+a+".");
    if (c>a>b) System.out.println("Die Zahl "+c+" ist größer als die Zahl "+a+". Die Zahl "+a+" ist aber größer als die Zahl "+b+".");
    if (c>b>a) System.out.println("Die Zahl "+c+" ist größer als die Zahl "+b+". Die Zahl "+b+" ist aber größer als die Zahl "+a+".");
    if (c>a==b) System.out.println("Die Zahl "+c+" ist größer als die Zahlen "+a+" und "+b+", die gleich groß sind.");
  }
}
```
Mein Problem ist, dass es wider Erwarten bei den if-Bedingungen nicht funktioniert, einfach alle drei Werte miteinander zu vergleichen... Was gibt es da für Alternativen? Und bitte Einsteigerfreundlich erklären, arbeite erst seit gestern mit java... Freue mich über jede Antwort!


----------



## Gast2 (9. Dez 2011)

```
a>b>c
```
 ist keine gültige Java Syntax. Daraus wird 
	
	
	
	





```
a > b && b > c
```
.

Musst du das Programm so "konfus" lösen? Was soll das Programm am Ende ausgeben?
Der Code ist so wie er da oben steht einfach nur schrecklich.


----------



## VictorS (9. Dez 2011)

Jaja, ich weiss, fang ja auch gerade erst an, ist nur zur Übung gedacht und Fehler gehören ja bekanntlich zum lernen dazu, wie würdest du das Programm denn Programmieren bzw. Was könnte ich statt den ganzen if-Konstruktionen einsetzen? Das Programm soll die Zahlen so zu sagen nach größe sortieren...

LG, Victor


----------



## c2delegate (9. Dez 2011)

Das kann doch niemals kompilieren!
es geht wesentlich unkomplizierter, ein tipp behaupte erstmal dass die erste zahl das maximum (höchste) ist und vergleiche diese mit anderen


----------



## Fab1 (9. Dez 2011)

was noch anzumerken wäre, setze immer nach der Bedingung der If-Anweisung Klammern. Dies ist oft eine Fehlerquelle.

zum Beispiel so:


```
if(Bedingung){
// Quellcode
    }
```

Ansonsten wird die If-Anweisung mit dem Semikolon abgeschlossen und meistens ist das nicht gewollt.


----------



## VictorS (9. Dez 2011)

Und wie genau mach ich das?


----------



## VictorS (9. Dez 2011)

c2delegate hat gesagt.:


> Das kann doch niemals kompilieren!
> es geht wesentlich unkomplizierter, ein tipp behaupte erstmal dass die erste zahl das maximum (höchste) ist und vergleiche diese mit anderen



Und wie genau mach ich das?


----------



## SheldoN (9. Dez 2011)

Hi,


```
public class Max    {

     public static void main (String[] args)  {
          int Eingabe = max(1, 2, 3);
     }

     public static int max ( int a, int b, int c )  {
          if ( a > b && a > c ) {
                System.out.println("Max ist " + a);
                System.exit(0);
          }
          return max(b, c);
     }
     public static int max (int b, int c)  {
          if ( b > c )  {
                 System.out.println("Max ist " + b");
                 System.exit(0);
          }
          return max(c);
     }
     public static int max (int c)  {
           System.out.println("Max ist " + c);
           return c;
     }
}
```

mfg


----------



## Fab1 (9. Dez 2011)

Es gibt auch die Edit Funktion.


Also es gibt einen recht einfachen Weg, den ich dir zeigen möchte. Der allerdings für den Anfang zu weit gehen würde. Für den Anfang ist deine Methode durchaus akzeptabel.

Trotz allem hier mal eine kürzere Methode, hab ein paar Kommentare im Code dazu geschrieben. Bei Fragen einfach fragen, aber wie gesagt für den Anfang geht es eigentlich zu weit.


```
public class Test {

	public static void main(String[] args){
	
		int feld[]= {3,5,10,100};  // Das ist eine Art Liste, kannst dir Arrays ja mal anschauen.
		
		java.util.Arrays.sort(feld); // Liste wird sortiert
		
		for(int i = 0; i <= feld.length-1; i++){  // wird mithilfe der For-Schleife ausgegeben.
			System.out.println(feld[i]);		// Consolenausgabe
		}
	}
}
```

Die Liste "feld" kann beliebig erweitert werden. Es werden immer alle Zahlen sortiert ausgegeben. Solange die Zahlen vom Typ int sind.


----------



## fibeline (9. Dez 2011)

Hallo,
mal ganz einfach für den Anfang:


```
if(a > b){  // wenn a > b, ist a das Maximum
  maximum = a; 
} else {    // wenn nicht, ist b das Maximum
  maximum = b;
}

if(maximum > c){ // wenn das bisherige Maximum größer ist als c, bleibt es das Maximum
  maximum = maximum;
} else {  // wenn nicht, ist c das neue Maximum
  maximum = c;
}

System.out.println("Das Maximum ist: "+maximum);
```

Du solltest dir aber noch ne Menge an Wissen anlesen, denn das geht noch einfacher. Fürs Verstehen von Bedingungen ist das aber ein recht einsteigerfreundlicher Anfang.

Gruß


----------



## SheldoN (9. Dez 2011)

Hi, 
Arrays können nicht erweitert werden.

mfg


----------



## Fab1 (9. Dez 2011)

SheldoN hat gesagt.:


> Hi,
> Arrays können nicht erweitert werden.
> 
> mfg



stimmt, aber wenn das Programm nicht läuft, kann man neue Zahlen dazu schreiben =)

So, jetzt hat jeder seine Lösung gepostet, viel Spaß beim verstehen

[Edit] Warum erbst du eigentlich von Zahlen?

```
public class Vergleichen2 extends Zahlen{
```
[/Edit]


----------



## Gast2 (9. Dez 2011)

```
if(maximum > c){ // wenn das bisherige Maximum größer ist als c, bleibt es das Maximum
  maximum = maximum;
} else {  // wenn nicht, ist c das neue Maximum
  maximum = c;
}
```
Das kannst du auch einfach so schreiben:

```
if (maximum < c) {
  maximum = c;
}
```


----------



## VictorS (9. Dez 2011)

Vielen Dank euch allen, liegt sicher nicht an euch, aber wirklich kapiert hab ich nur den Beitrag von Fibeline, hab mir trotzdem alle sehr weitergeholfen:toll:

MfG, Victor


----------



## fibeline (9. Dez 2011)

EikeB hat gesagt.:


> ```
> if(maximum > c){ // wenn das bisherige Maximum größer ist als c, bleibt es das Maximum
> maximum = maximum;
> } else {  // wenn nicht, ist c das neue Maximum
> ...



Für die Erklärung zur Funktionsweise von Bedingungen fand ichs persönlich am einfachsten. Dass es noch simpler geht, ist keine Frage


----------



## VictorS (9. Dez 2011)

Fab1 hat gesagt.:


> stimmt, aber wenn das Programm nicht läuft, kann man neue Zahlen dazu schreiben =)
> 
> So, jetzt hat jeder seine Lösung gepostet, viel Spaß beim verstehen
> 
> ...



Ich wollte die Werte erst aus einer anderen Datei raussholen, hat aber nicht geklappt also hab ich sie wieder in den code reingeschrieben und vergessen, das wegzumachen...


----------



## fibeline (9. Dez 2011)

Schau doch mal hier: Galileo Computing :: Java ist auch eine Insel – 2.6 Bedingte Anweisungen oder Fallunterscheidungen


----------

