Variable in if initialisieren

Adolf

Mitglied
Ich habe eine Frage, und zwar, weiß jemand, wenn ich eine if schleife mache, und dann aus der Schleife das richtige auf eine double Variable initialisieren muss? Also den richtigen Wert auf die double Variable initialisieren?
Danke im Voraus.
 

LimDul

Top Contributor

Es gibt keine If-Schleifen!

Ansonsten fehlen Informationen. Weiß der Variablen den richtigen Wert in der If-Bedingung zu. Deine Frage ist dazu zu unkonkret, liefere am besten mal Beispielcode wo es genau klemmt.
 

M.L.

Top Contributor
Man könnte sich ja ein kleines Beispiel konstruieren:
Java:
public class if_Abfrage {
    public static void main (String[] args) {
       
        for (int i=0; i< 4; i++){
            if (i == 2) {
               double d = 4.2;
               System.out.println("d enthält " + d);
            }
        }
    }
}
...es scheint jedenfalls zu funktionieren.
 

Adolf

Mitglied
Oh Tut mir leid. Meine Eigentliche Frage ist:


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;
}
double result;

return result;

Wie kann ich hier die double Variable so initialisieren, damit sie dann den Result ausgibt, der Zustimmt?
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Also das ist in meinen Augen Code, der schwer zu lesen ist. Was macht der Code? Du willst die Summe der beiden größten Zahlen haben?

Wäre da eine Logik wie diese hier nicht evtl. lesbarer:
Java:
double result = Math.max(resultJump1+resultJump2, resultJump1+resultJump3);
result = Math.max(result, resultJump2+resultJump3);
return result;

Das aber nur als kleine Anregung weil es mir so beim Lesen durch den Kopf ging.
 

Adolf

Mitglied
Java:
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 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...
 
Zuletzt bearbeitet von einem Moderator:

temi

Top Contributor
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...
Ja, dann mach das doch einfach, z.B. 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).
 

LimDul

Top Contributor
Eine Variable muss am ende einen Wert haben.

Wenn du if-Bedingungen schreibst musst du entweder:
* Der Variablen einen default-Wert vor den If-Bedinungen setzen
* einen else Block in dem du die Variable auf einen default Wert setzt (Oder wenn der nicht auftreten darf, dort eine Exception wie eine IllegalStateException werfen)
* Die Bedingungen so Formulieren, dass der Compiler überprüfen kann, dass garantiert immer eine Bedingungen zutrifft (Dann kann man die letzte Bedingung aber auch als else schreiben)
 
K

kneitzel

Gast
Wenn resultJump1 größer als die beiden anderen Werte ist, dann addierst du 2 mal resultJump1.
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.
 

Adolf

Mitglied
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.
 

mrBrown

Super-Moderator
Mitarbeiter
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.
Also: es sollen die zwei größten Werte addiert werden?
 

Adolf

Mitglied
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.
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.
 
K

kneitzel

Gast
Ja, und wenn zwei werte gleich sind, dann der eine und der größere Wert
Dann solltest Du die > in >= umwandeln. Sobald zwei Werte gleich sind, wird keine der drei if Bedingungen erfüllt und result wird nicht gesetzt.

Daher wird entweder der Compiler meckern wenn Du nur etwas hast wie:
Java:
double result;
if (..) {
    result = ...
} else if (..) {
    result = ...
} else if (..) {
    result = ...
}
return result;
weil result im return verwendet wurde aber nicht garantiert ist, dass Du einen Wert zugewiesen hast.

Den Compiler kann man ruhig stellen mit einer Zuweisung bei der Deklaration, aber das willst Du ja nicht... liefert falsche Ergebnisse! Wenn a = b = c = 1.0 ist und Du result z.B. auf 0 setzt, dann würde ja 0 zurück gegeben. Aber das Ergebnis ist natürlich 1.

Edit: Noch das "das willst Du ja nicht" so korrigiert, das klar ist, dass keine richtige Lösung raus kommen würde!
 
Zuletzt bearbeitet von einem Moderator:
K

kneitzel

Gast
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.
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.

Die Alternative wäre, die if / else anders zu verschachteln:
Java:
if (a > b) {
    if (b > c) {
        return a+b;
    } else {
        return a+c;
    }
} else {
    if (a > c) {
        return b+a;
    } else {
        return b+c;
    }   
}

Jetzt gibt es keinen Fall mehr, bei dem nichts durchlaufen ist und man muss auch keinen >= abprüfen. Wenn a==b ist, ist ja egal, ob der if oder der else zweig durchlaufen wird (und dann entweder a oder b genommen wird).

Das ist ansonsten übrigens nichts anderes als das verschachtelte Max., denn ein max wird ja berechnet über:
Java:
if (a > b) {
    return a;
} else {
    return b;
}
 

temi

Top Contributor
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.
Ist mir etwas entgangen? Genau das macht doch der Code von @kneitzel, er summiert die beiden größten Werte.
Java:
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));
    }
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Variable Initialisierung mit dem Ergebnis einer Regex Allgemeine Java-Themen 1
A Clean Code: Variable vs. Methode Allgemeine Java-Themen 8
J Wo kommt der Wert der Variable her ? Allgemeine Java-Themen 6
E Variablen Nach Übergabe einer Variable den Constructor aufrufen Allgemeine Java-Themen 16
H lokale Variable bei Optional verwenden Allgemeine Java-Themen 11
S Variable als Objekt Name Allgemeine Java-Themen 3
D "Automatisierte", variable verschachtele for-Schleife Allgemeine Java-Themen 9
T statische Variable und nicht-statische Methode Allgemeine Java-Themen 2
P Variable wird in for - loop nicht richtig hochgezählt Allgemeine Java-Themen 11
A Variablen non-static variable cannot be referenced from a static content Allgemeine Java-Themen 4
A Variable, welche Exeption wirft als "Global" deklarieren Allgemeine Java-Themen 13
A Scanner Variable Klassenimtern deklarieren Allgemeine Java-Themen 12
L Variablen Variable nicht aktualisiert Allgemeine Java-Themen 3
denny86 NetBeans Ordnernamen rekursiv auslesen und in Variable verarbeiten Allgemeine Java-Themen 38
R Variable durch mehrere Methoden ändern und nutzen Allgemeine Java-Themen 17
P Static Variable -> unterschiedliche Werte? Allgemeine Java-Themen 1
C Abstrakte Klasse, lokale Variable-Problem Allgemeine Java-Themen 1
T AWT AWT-EventQueue-0 Null_Pointer_Exception durch Variable Allgemeine Java-Themen 12
M Variable ändern bei jedem Schleifendurchlauf Allgemeine Java-Themen 32
F Wert in Variable schreiben, wenn diese gerade genutzt wird Allgemeine Java-Themen 10
P Prüfen ob es Variable mit Namen gibt der als String übergeben wird Allgemeine Java-Themen 7
S JFrame Variable mitgeben Allgemeine Java-Themen 5
M Variable außerhalb Klasse definierbar? Allgemeine Java-Themen 2
X Bild -> lokale Variable -> DB -> lokale Variable Allgemeine Java-Themen 3
F Aktuelle Variable Allgemeine Java-Themen 2
J String Variable verändert sich plötzlich Allgemeine Java-Themen 8
J private static final String variable Allgemeine Java-Themen 8
A Long variable wird negativ??? Allgemeine Java-Themen 1
reibi Classpath Classpath Variable beim Tomcat Allgemeine Java-Themen 2
M Zeiger auf statische Variable Allgemeine Java-Themen 1
H Klassennamen zum Aufruf eines statischen Feldes aus Variable holen Allgemeine Java-Themen 4
F Variable übergeben?! Allgemeine Java-Themen 2
L Variable auch in der function verfügbar machen? Allgemeine Java-Themen 4
M Collections Typ Variable einer generischen Collection ? Allgemeine Java-Themen 4
P Variablen Variable von void im ActionListener verwenden Allgemeine Java-Themen 3
M Parallele Programmierung: volatile Variable nimmt ungewöhnlichen Wert an Allgemeine Java-Themen 3
iB0T Variable Wert ausrauchen Allgemeine Java-Themen 3
T Variablen Variable wird als nicht genutzt angezeigt Allgemeine Java-Themen 8
S Datentypen Eine Variable von String zu Int ändern Allgemeine Java-Themen 5
Hoppelmann "Variable" in String erkennen Allgemeine Java-Themen 2
B Variable class in java.lang.Object Allgemeine Java-Themen 11
O Variablen Originalname einer übergebenen Variable prüfen Allgemeine Java-Themen 9
X Windows-Environment-Variable per jRegistryKey anpassen Allgemeine Java-Themen 6
P Variable in Array stellen Allgemeine Java-Themen 11
M Arraynamen durch Variable festlegen lassen Allgemeine Java-Themen 5
J Anderem Thread Variable mitgeben Allgemeine Java-Themen 2
nrg Auszulagernder Part, der aber variable Methode/Klasse aufruft Allgemeine Java-Themen 7
I %AppData% Variable für einen Prozess setzen Allgemeine Java-Themen 23
G Variablen Variable extern speichern - wie? Allgemeine Java-Themen 9
M Variablen Wie Variable verfügbar machen? Allgemeine Java-Themen 16
A variable aus einer anderen klasse verändern Allgemeine Java-Themen 5
G Variable Methodenwahl Allgemeine Java-Themen 11
C JFormattedTextField Inhalt einer Variable zuweisen Allgemeine Java-Themen 11
C Variablen Variable einer Klasse in einer anderen Klasse Nutzen Allgemeine Java-Themen 8
B Umgebungsvariable Variable wird nicht übernommen Allgemeine Java-Themen 4
N variable Anzahl von Objektinstanzen zur Laufzeit erstellen Allgemeine Java-Themen 4
C Environment Variable in Pfad -> Datei öffnen Allgemeine Java-Themen 5
Q Variable aus Schleife/Switch benutzen Allgemeine Java-Themen 7
algorismi int-variable Value Change event Allgemeine Java-Themen 3
E Variable dynamisch ausgeben Allgemeine Java-Themen 5
trash super() mit Variable bestücken Allgemeine Java-Themen 3
X Cannot refer to a non-final variable settings inside an inner class defined in a different method Allgemeine Java-Themen 4
A Variable Parameterinhalte an einen Query übergeben? Allgemeine Java-Themen 3
B static Variable / Unterklasse Allgemeine Java-Themen 2
J Was ist schneller? Neue Variable oder neuer Wert speziell int Allgemeine Java-Themen 3
S Innere Klasse: Zugriff auf äußere Variable Allgemeine Java-Themen 5
Semox Fehler - Zuweisung aus BufferedReader an Variable Allgemeine Java-Themen 3
Daniel_L RegEx - variable Vorkommen ersetzen? Allgemeine Java-Themen 5
P Unicode-Sequenz (u1234) in Variable speichern und ausgeben Allgemeine Java-Themen 6
G auf variable in anderer class zugreifen Allgemeine Java-Themen 2
G Variable global nutzen Allgemeine Java-Themen 4
V Variable vom Typ String zum Typen "Message" konve Allgemeine Java-Themen 2
J in einer static Variable Wert ändern Allgemeine Java-Themen 6
M Try-Catch: wie wird Variable bei Exception initialisiert? Allgemeine Java-Themen 8
G Speicherverbrauch einer Variable Allgemeine Java-Themen 2
C ArrayList mit Variable im Namen Allgemeine Java-Themen 16
T JNI Referenz auf Variable in Java? Allgemeine Java-Themen 2
G Überprüfen, ob Variable ein Array ist? Allgemeine Java-Themen 5
R Member-Variable erzwingen Allgemeine Java-Themen 17
D LinkedList anhand einer long-Variable der Objekte sortieren Allgemeine Java-Themen 5
M Zugriff auf Objekt, Name in Variable Allgemeine Java-Themen 3
G Problem mit einer Variable Allgemeine Java-Themen 3
O Future Variable Allgemeine Java-Themen 4
M variable übergeben NICHT KOPIEREN Allgemeine Java-Themen 12
loadbrain KeyEvent mit Variable verknüpfen Allgemeine Java-Themen 4
M Prüfen ob Variable vorhanden / initalisiert ist Allgemeine Java-Themen 4
G Variable wird ignoriert - warum ? Allgemeine Java-Themen 36
L ctrl-z wird nicht in Variable gespeichert Allgemeine Java-Themen 4
G Variable Anzahl JTextfleder Allgemeine Java-Themen 3
R Wenn Variable = wat ist Allgemeine Java-Themen 7
H Zugriff auf statische Variable synchronisieren Allgemeine Java-Themen 4
H globale Variable wird nicht überall erkannt Allgemeine Java-Themen 3
G Zugriff auf Variable in abgeleiteter Klasse Allgemeine Java-Themen 6
R Eine Variable an eine Methode mit Array übergeben Allgemeine Java-Themen 7
E Variable in einer Methode Allgemeine Java-Themen 13
O Environment Variable Setzen Allgemeine Java-Themen 2
G Referenz auf Variable! Allgemeine Java-Themen 3
C Variable aus einer Methode einlesen in einer verarbeiten und Allgemeine Java-Themen 6
G 1.5er String.format() -> variable Feldlaenge? Allgemeine Java-Themen 5
S wie übergebe ich eine Variable aus einer Methode an main() ? Allgemeine Java-Themen 16

Ähnliche Java Themen

Neue Themen


Oben