Sortieren

Neue Frage »

Auf diesen Beitrag antworten »
InformatikJava12 Sortieren

Hallo,
es geht um folgende Aufgabe

Schreiben Sie ein Programm in Java, welches drei Zahlen einliest und diese anschließend in sortierter Reihenfolge ausgibt. Verwenden Sie dazu bedingte Verzweigungen. Die drei Variablen selbst dürfen nur mit den entsprechenden Werten initialisiert und anschließend nicht mehr verändert werden (verwenden Sie bei der Deklarierung das Schlüsselwort final). Zusätzliche Variablen sind ebenfalls nicht erlaubt!

Das Einlesen müsste kein Problem sein. Da nichts angeben ist würde ich die 3 Variablen als double einlesen lassen. Wie ist dann die Idee. Ich würde normalerweise immer die eine Zahl mit der anderen vergleichen aber dazu bräuchte ich doch eine neue Variable. Wie kann ich das umgehen?
 
Auf diesen Beitrag antworten »
as_string

Hallo!

Wie ist denn z. B. die korrekte Reihenfolge, wenn die Bedingung
code:
1:
(a < b && b < c)
erfüllt wäre? Könntest Du auch für die anderen möglichen Reihenfolgen Bedingungen formulieren? Wieviele Reihenfolgen (Permutationen) gibt es denn bei 3 Zahlen?

Gruß
Marco
Auf diesen Beitrag antworten »
InformatikJava12

Zitat:
Original von as_string
Hallo!

Wie ist denn z. B. die korrekte Reihenfolge, wenn die Bedingung
code:
1:
(a < b && b < c)
erfüllt wäre?
Marco


Die Reihenfolge wäre dann a,b,c.
Es gäbe 3!=6 Permutationen.

Dein Beispiel würde ich dann mit der if-Bedingung implementieren:
Also
code:
1:
2:
3:
if(a < b && b < c) {
    System.out.println(a + b +c);
}

oder?

[as_string: ich hab noch code-Tags um den Quelltext gemacht und etwas eingerückt, so ist es besser lesbar, ist das so OK?]
Auf diesen Beitrag antworten »
as_string

Genau. Ich würde zwar die Ausgabe vielleicht noch etwas überarbeiten, aber prinzipiell genau so. Ich würde einfach mit if.. else if ... else if ... etc. alle 6 Fälle abfrühstücken und gut ist, oder?

Gruß
Marco

PS: Da a, b und c ja Zahlen sind, wird Deine Ausgabe die Summe aus allen ausgeben (wenn überhaupt ein String draus wird und das nicht gleich einen Syntaxfehler ergibt?) Das musst Du noch anders machen, weil die Summe ja auch immer dieselbe wäre...
 
Auf diesen Beitrag antworten »
InformatikJava12

Dankeschön Daumen hoch smile
D.h als Ausgabe muss ich schreiben.
System.out.println("a" + "b"+"c") oder?
Auf diesen Beitrag antworten »
as_string

So konkatinierst Du nur die Strings "a", "b" und "c" zu "abc". Du willst doch aber die Zahlen ausgeben, also die Zahlenwerte von a, b und c zu Strings wandeln und diese eventuell noch mit Kommata getrennt o. ä. ausgeben, oder?
Im Zweifelsfall: Probiers doch einfach aus! Schreib das Programm und schau Dir an, was es ausgibt!

Gruß
Marco
Auf diesen Beitrag antworten »
InformatikJava12

D.h ich mach es fallspezifisch. Also für den Fall: a>b, b>c
Dann also system.out.println(c);
Sy......(b);
Sy......(a);
In jedem Fall dann anders. Geht das so?
Auf diesen Beitrag antworten »
as_string

Probiers doch einfach mal aus. Compiliert der Code? Macht er, was er soll?

Gruß
Marco
Auf diesen Beitrag antworten »
InformatikJava12

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
import java.io.*;
 public class Sotierer {
 public static void main( String[] args) throws IOException{
 final int x,y,z; 
BufferedReader ein = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Gib eine Zahl ein");
 x= Integer.parseInt(ein.readLine()); 
System.out.println("Gib noch eine Zahl ein");
 y= Integer.parseInt(ein.readLine()); 
System.out.println("Gib noch eine Zahl ein");
 z= Integer.parseInt(ein.readLine());
 if(x < y && y < z) {
 System.out.println(x); 
System.out.println(y);
 System.out.println(z); }
 else if( x < z && z < y) {
 System.out.println(x);
 System.out.println(z);
 System.out.println(y); }
 else if( y<z && z<x) {
 System.out.println(y);
 System.out.println(z);
 System.out.println(x); }
 else if( y < x && x < z) {
 System.out.println(y);
 System.out.println(x);
 System.out.println(z); }
 else if( z < x && x < y) {
 System.out.println(z);
 System.out.println(x);
 System.out.println(y); }
 else if( z < y && y < x) { 
System.out.println(z);
 System.out.println(y); 
System.out.println(x); } } }


So habe ich das gemacht. Kann man das optimieren?
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »