Was?weiß jemand, wenn ich eine if schleife mache, und dann aus der Schleife das richtige auf eine double Variable initialisieren muss?
Ich hatte gehofft der Beitrag sagt mehr als sein Titel, habe mich geirrt.
double result = Math.max(resultJump1+resultJump2, resultJump1+resultJump3);
result = Math.max(result, resultJump2+resultJump3);
return result;
Deklarieren, nicht definierenDefiniere die Variable vor der gesamten If-bedingung, nicht danach
Wenn resultJump1 größer als die beiden anderen Werte ist, dann addierst du 2 mal resultJump1.double result = Math.max(resultJump1+resultJump2, resultJump1+resultJump3);
double result;
if ((resultJump1 > resultJump2) && (resultJump2 > resultJump3))
{
result = resultJump1 + resultJump2;
}else if((resultJump2 > resultJump3) && (resultJump3 > resultJump1))
{
result = resultJump2 + resultJump3;
}else if((resultJump3 > resultJump1) && (resultJump1 > resultJump2))
{
result = resultJump3 + resultJump1;
}
return result;
Ja, dann mach das doch einfach, z.B.Ja schon, aber wenn ich die Variable result oben deklariere, muss ich sie trotzdem Initialisieren. Es kommt unten bei return result, dass ich die Variable initialisieren muss...
double result = 0;
oder was auch immer du als sinnvollen Initialwert ansiehst. Diesen Wert hat am Ende die Variable, wenn keine deiner if-Bedingungen erfüllt ist (und damit den Wert neu setzt).Was meinst Du bitte?Wenn resultJump1 größer als die beiden anderen Werte ist, dann addierst du 2 mal resultJump1.
return Math.max(a+b, Math.max(a+c, b+c));
double result = Math.max(resultJump1+resultJump2, resultJump1+resultJump3);
return Math.max(result, resultJump2+resultJump3);
Also: es sollen die zwei größten Werte addiert werden?Also wir haben 3 Werte, wenn zwei Werte gleich sind, aber der 3. Wert kleiner ist, sollen die zwei gleichen addiert werden. Wenn jetzt Zwei Werte gleich sind, aber der 3. Wert größer, soll einer von den zwei gleichen mit dem größerem addiert werden.
Ja, dein Anhang hätte gepasst, leider musste ich dann noch einen Code schreiben, wo ich das oben erwähnte machen musste, aber ansonsten hätte es gepasst.Was meinst Du bitte?
Der Autor addiert immer die zwei größten Werte.
a >b && b>c ==> a+b
Aus a > b und b > c resultiert auch:
a+b > b+c ==> -b auf beiden Seiten: a > c
a+b > a+c ==> -a auf beiden Seiten: b > c
Daher wird die größte der drei Summen genommen: a+b, a+c und b+c
Daher ist es ein einfaches
return Math.max(a+b, Math.max(a+c, b+c));
oder eben als drei Zeilen geschrieben ... wobei die dritte Zeile unnötig scheint und ein
Java:double result = Math.max(resultJump1+resultJump2, resultJump1+resultJump3); return Math.max(result, resultJump2+resultJump3);
nicht wirklich unleserlicher ist. Der Name der Variable result könnte aber noch umbenannt werden denn es ist ja nicht mehr das Ergebnis, das dort gespeichert / aufgebaut wird.
Dann solltest Du die > in >= umwandeln. Sobald zwei Werte gleich sind, wird keine der drei if Bedingungen erfüllt und result wird nicht gesetzt.Ja, und wenn zwei werte gleich sind, dann der eine und der größere Wert
double result;
if (..) {
result = ...
} else if (..) {
result = ...
} else if (..) {
result = ...
}
return result;
Nein, du hättest gar nichts mehr machen müssen. Bei Deinem Code mit den > gibt es noch Probleme. Bei meiner max Lösung interessiert es nicht.Ja, dein Anhang hätte gepasst, leider musste ich dann noch einen Code schreiben, wo ich das oben erwähnte machen musste, aber ansonsten hätte es gepasst.
if (a > b) {
if (b > c) {
return a+b;
} else {
return a+c;
}
} else {
if (a > c) {
return b+a;
} else {
return b+c;
}
}
if (a > b) {
return a;
} else {
return b;
}
Ist mir etwas entgangen? Genau das macht doch der Code von @kneitzel, er summiert die beiden größten Werte.Also wir haben 3 Werte, wenn zwei Werte gleich sind, aber der 3. Wert kleiner ist, sollen die zwei gleichen addiert werden. Wenn jetzt Zwei Werte gleich sind, aber der 3. Wert größer, soll einer von den zwei gleichen mit dem größerem addiert werden.
public class Main {
public static void main(String[] args) {
System.out.println(sumMax(1, 2, 3)); // 5
System.out.println(sumMax(2, 1, 3)); // 5
System.out.println(sumMax(3, 2, 1)); // 5
System.out.println(sumMax(2, 2, 3)); // 5
System.out.println(sumMax(3, 2, 2)); // 5
System.out.println(sumMax(2, 3, 2)); // 5
System.out.println(sumMax(3, 2, 3)); // 6
System.out.println(sumMax(2, 3, 3)); // 6
System.out.println(sumMax(3, 3, 2)); // 6
}
public static int sumMax(int a, int b, int c) {
return Math.max(a + b, Math.max(a + c, b + c));
}
}