Kontrollstrukturen

Kathi3210

Mitglied
Hallo,
ich stehe bei der folgenden Aufgabe etwas auf dem Schlauch...
vielleicht kann mir jemand helfen, wäre nett...danke🙂

Schreiben Sie ein Java Programm, bei dem der Benutzer drei int-Werte a, b und c eingibt.
Sortieren Sie diese Werte mittels if-Abfragen so, dass a < b < c gilt. Geben Sie am Schluss
die Werte von a, b und c aus. Prüfen Sie Ihr Programm mit den sechs möglichen
Permutationen der Zahlen 1, 2, 3 – Ihr Programm muss in allen Fällen „1, 2, 3“ ausgeben.
Hinweis: da höchstens drei Vertauschungen erforderlich sind, genügen drei if-Abfragen!
 
kannst du irgendwas beitragen,
allein die Eingabe + Ausgabe,
allein die Variablendeklaration,
eine Klassendefinition?..
 
Java:
int a;
int b; 
int c;

if(a>b>c) 
if(a<b>c)
usw.
mache ich das mit true und false?

ich weiß ehrlich gesagt nicht, wie ich das sortieren soll...
wie gesagt, ich hab eigentlich gar keinen plan...
 
du kannst immer nur zwei Werte vergleichen und dann diese vertauschen,
fange damit an, a und b zu vergleichen und gegebenenfalls zu vertauschen, danach überlege weiter was noch nötig ist

> mache ich das mit true und false?

mache doch einfach 10 oder 20 Dinge, schaue dir die Fehlermeldungen an usw.,
wenn du einzelne Vergleiche noch nicht kennst, dann übe die vorher in separaten Problemen,
denke nicht gleich über drei Variablen gleichzeitig nach, 2 statt 3 sind schon einfacher
 
Java:
int a;
int b;
int c;

if((a<b)&(b<c)&(a<c))

also quasi erst mal so?
aber wie kann ich das dann auf 1, 2 und 3 übertragen?
 
Wie wäre es, wenn du den variablen die Werte zuordnest?

a=2
b=3
c=1

Da aber in der Aufgabe steht "bei dem der Benutzer drei int-Werte a, b und c eingibt" musst du wohl per "Scanner" Klasse die Tastatureingabe den Variablen a-c zuweisen.

Hier ist die Doc für die Klasse

PS: Wenn a<b und b<c muss du nicht mehr a<c abfragen ;D
 
Zuletzt bearbeitet:
Hinweis: da höchstens drei Vertauschungen erforderlich sind, genügen drei if-Abfragen!


aber was ist dann die dritte if- Abfrage?^^
und der Benutzer soll ja die werte eingeben, wie gebe ich dann die Werte aus??...
 
siehe auch mein Posting zwischendurch

> aber was ist dann die dritte if- Abfrage?^^
das ist was kompliziertes, von dem du noch sehr weit entfernt bist, versuche dich vorher an einfachen Dingen

> wie gebe ich dann die Werte aus??...
immer aller aller ersten Hello Wold-Programm lernt man schon die Ausgabe


> also a = InputTolls.readInteger()
> b = ....

nicht genauso?
InputTolls oder InputTools kennt hier übrigens niemand, dazu kann dir keiner was sagen
 
Benutzereingaben einlesen ist wahrlich kein gutes Kapitel in Java, und ist zum Testen sowieso schlecht, man müsste ständig tippen,
programmiere lieber alles erstmal mit im Quellcode vorgegebenen Werten

zur Ausgabe gibt es mehr als System.out.println() kaum zu sagen

------

ich empfehle zum Einlesen nur ganze Zeilen zu lesen und dann im Programm weiterzuverarbeiten
Lesen von der Konsole
aber das dürfte sich mit deinen InputTools beißen
 
Also ich hab da jetzt so ne art lösung, die auch funktioniert, aber ist das nicht zu einfach?

Java:
public class Kontrollstrukturen{
public static void main (String[]args){
int a = 1;
int b = 3;
int c = 2;

if ((a<b)&(b<c)) System.out.println(a+","+b+","+c);
else System.out.println("Fehler")
}
}
 
dein hauptsächliches Problem dürfte sein, dass es nicht der Aufgabenstellung entspricht,
du sollst die Werte sortieren, Variableninhalte gegebenenfalls vertauschen,
am Ende die Variablen genau in Reihenfolge ausgehen, weil sie dann sortiert sein sollen

wiederholte Tipps:
- dein ganzes Programm sollte kein & (oder sowieso den richtigen Operator &&) enthalten, in jedem if nur ein Vergleich zweiter Werte

- fange mit nur zwei Werten an, a und b,
ich werde nun zu keinem Posting mehr antworten in denen a, b und c auftauchen
solange nicht zu a und b eine annehmbare Lösung besprochen wurde

-----

im übrigens schon schön dass es ein vollständiges Programm mit Klasse, Variablendeklaration, Beispielwerten und einer gewissen Ausgabe geworden ist, ein guter Anfang
 
Zuletzt bearbeitet von einem Moderator:
Nein, deine Lösung ist falsch...du sortierst die Werte nicht sondern gibts einfach einen Fehler aus falls die Bedingung nicht gilt.
Nehmen wir an a=3, b=2, c=1. Es soll gelten a<b<c, was im Moment nicht der Fall ist.
Also musst du die Werte sortieren. Dazu nimmst du am besten eine Hilfsvariable names temp und gehst z.B. wie folgt vor:

Java:
if(a>b){
  temp = a;
  a = b;
  b = temp;
}

Somit wäre a=2 und b=3, damit gilt schon mal a<b. Das ganze machst du jetzt entsprechend noch für c.
 
nur a und b ist nun geklärt..

> Das ganze machst du jetzt entsprechend noch für c.

wobei es nun spannend ist, mit was c zu vergleichen ist, bisschen ausprobieren schadet nicht,
vielleicht hilft dabei der Hinweis aus der Aufgabenstellung: "da höchstens drei Vertauschungen erforderlich sind, genügen drei if-Abfragen!"

drei einzelne ifs, mit jeweils einem Vergleich, jeweils einer Vertauschung, kein &&, keine Ausgabe im if, oder sonstige Kapriolen,
ein if ist gefunden, zwei ähnliche noch dazu
 
ich hab das jetzt mal rausbekommen, aber da wird bei println n fehler angezeigt

Java:
int a;
int b;
int c;

int temp;
if(a>b)
{

temp=a;
a=b;
b=temp;
}
if(b>c)
{

temp=b;
b=c;
c=temp;
}
if(a>b)
{

temp=a;
a=b;
b=temp;
}
printf(,a,b,c);
 
Zuletzt bearbeitet von einem Moderator:
println taucht in deinem Code gar nicht auch,

[c](,[/c] kann nie etwas sinnvolles sein

früher hattes du doch schon
> System.out.println(a+","+b+","+c);
ist das so schwer?

die drei Tausche sind aber gut
 
System.out.println meint ich eigentlich.... da wird jetzt a, b und c angestrichen
aber wie soll ich das programm mit den 6 möglichen permutationen von der zahlen 1,2,3 prüfen? ich kann ja nicht einfach 6x a=... b=--- und c=... hinschreiben
 
poste den gesamten Code,
und du sollst letzlich eine Benutzereingabe einbauen und 6x verschiedene Dinge eintippen,
du hattest hoffentlich schon vorher Programme mit Eingaben von Zahlen?
 

Zurück
Oben