if and else geht nur manchmal

osion

Bekanntes Mitglied
Situation:

Java:
	if ((totalLastScan != totalAllScan)) {
					..CODE...
				} else {
					System.out.println("take");
					...CODE...
				}


In der Console wird immer folgendes ausgegeben :

  1. Total Last
  2. Total All
  3. Gibt die if true oder false zurück

Der Vorgang wird nach X Time immer wiederholt.

Im Beispiel sollte es beim Else auch die Ausgabe "Take" zusätzlich noch erscheinen.
Console Ausgabe am Ende:

Total Last 139
Total All 139
TRUE OR FALSE false
Total Last 139
Total All 139
TRUE OR FALSE false
Total Last 139
Total All 139
TRUE OR FALSE false
Total Last 139
Total All 139
TRUE OR FALSE false
Total Last 139
Total All 139
TRUE OR FALSE false

Problem: Wenn ich das Beispiel oben habe, so geht es nie in den ELSE Bereich auch wenn es false gibt, wenn ich aber, z. B. nur 2 Scans habe so geht alles ohne Probleme.

Console bei nur 2 Scans:

Total Last 2
Total All 2
TRUE OR FALSE false
take
Total Last 2
Total All 2
TRUE OR FALSE false

Es funktioniert auch wenn ich statt ne if else einfach zwei If mache oder ne elseif

Frage: Kennt ihr das Problem?

Danke =)
 
Zuletzt bearbeitet:

Thallius

Top Contributor
Sorry aber meine Glaskugel ist in Reparatur. Wie sollen wir ohne Code wissen was du da machst? Eins kann ich Dir aber garantiert sagen. Der Fehler liegt bei Dir

Gruß

Claus
 

VfL_Freak

Top Contributor
Moin,

Sorry aber meine Glaskugel ist in Reparatur. Wie sollen wir ohne Code wissen was du da machst? Eins kann ich Dir aber garantiert sagen. Der Fehler liegt bei Dir
Dem kann ich nur zustimmen !! :noe:
Die von Dir geposteten Ausgaben kommen ja nun mal sicher NICHT aus dem Codeschnipsel !! :bahnhof:

Also poste den kompleten relevanten Code und beschreibe dann verständlich Deine Frage ....

Gruß
Klaus
 

arilou

Bekanntes Mitglied
Ich glaskugele mal: In Java gibt's keinen "elseif", so dass man immer schön aufpassen muss, zu welchem if denn ein else genau gehört. Da empfiehlt es sich, immer schön {} nach jedem if und nach jedem else zu verwenden, um ggf. eine Situation zu klären.

Ach ja: In deinem Beispiel ist "total last" und "total last ALL" immer = 139, und somit immer identisch.
Womit dein if ganz korrekt immer in den else-("false")-Zweig gehen sollte?
 
Zuletzt bearbeitet:

osion

Bekanntes Mitglied
Also viel mehr macht dieser Abschnitt nicht.

Java:
package desktopClean.controller.database;

import desktopClean.database.DatabaseForScanning;
import desktopClean.database.DatabaseForScanningSortDataFileAFolderNow;
import desktopClean.view.GuiTransferAMoveRaport;

public class GuiDataTransferThreadChangeRaportValueScan implements Runnable {
	public GuiDataTransferThreadChangeRaportValueScan(
			GuiTransferAMoveRaport classeGuiTransferAMoveRaport) {
		// TODO Auto-generated constructor stub
		this.classeGuiTransferAMoveRaport = classeGuiTransferAMoveRaport;

	}

	GuiTransferAMoveRaport classeGuiTransferAMoveRaport;

	Integer totalLastScan = 0;

	Integer totalAllScan = 0;
	Integer totalAllMakeNice = 0;

	public void run() {

		while (true) {
			try {
				for (int counter = 0; DatabaseForScanning.getTotalScansArray()
						.size() - 1 >= counter; counter++) {
					totalAllScan += DatabaseForScanning.getTotalScansArray()
							.get(counter).get();
				}
				classeGuiTransferAMoveRaport.progressBarIntegerScanTotal
						.setString(totalAllScan + "");

				for (int counter = 0; DatabaseForScanningSortDataFileAFolderNow
						.getTotalMakeNiceArray().size() - 1 >= counter; counter++) {
					totalAllMakeNice += DatabaseForScanningSortDataFileAFolderNow
							.getTotalMakeNiceArray().get(counter).get();
				}
				
				
				if (totalLastScan != totalAllScan) {
					classeGuiTransferAMoveRaport.progressBarIntegerMakeNiceTotal
							.setMaximum(totalAllScan);
					classeGuiTransferAMoveRaport.progressBarIntegerScanTotal
							.setIndeterminate(true);
					totalLastScan = totalAllScan;
				}else {
					
					classeGuiTransferAMoveRaport.progressBarIntegerScanTotal
							.setIndeterminate(false);
				
				}

				classeGuiTransferAMoveRaport.progressBarIntegerMakeNiceTotal
						.setValue(totalAllMakeNice);
				

				totalAllScan = 0;
				totalAllMakeNice = 0;
			} catch (NullPointerException e) {
				// TODO: handle exception
			}

			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

}
 
Zuletzt bearbeitet:

arilou

Bekanntes Mitglied
Java:
if( A )
{
    // ...
}
else if( B )
{
    // ...
}
else if( C )
{
    // ...
}
else
{
    // ...
}

Lieber Klaus,
dein Beispiel ist eine Aneinanderreihung von if{}else{} Statements, ohne einen einzigen "elseif" darin.
Ich schreib' das mal deutlicher:
Java:
if( A )
{
  // ...
}
else
  if( B )
  {
    // ...
  }
  else
    if( C )
    {
      // ...
    }
    else
    {
      // ...
    } // end if
  // end if
// end if

Ich kann hierin keinen einzigen echten "elseif" entdecken, sondern nur else-Abschnitte mit genau 1 Anweisung darin: ein erneuter if{}else{}. (Ausnahme ist der letzte else-Fall, der einen Block enthält.)
Oder noch deutlicher:
Java:
if( A )
{
  // ...
}
else
{
  if( B )
  {
    // ...
  }
  else
  {
    if( C )
    {
      // ...
    }
    else
    {
      // ...
    } // end if
  } // end if
} // end if

Und gerade WEIL das so leicht in die Hose gehen kann mit deiner Vorgehensweise, empfehle ich dringend jedem Java-Programmierer, die letztere Variante zu verwenden. Es gibt keinen elseif in Java.
 

VfL_Freak

Top Contributor
Moin,

dein Beispiel ist eine Aneinanderreihung von if{}else{} Statements, ohne einen einzigen "elseif" darin.
Aha - und wo ist da Deiner Meinung nach der Unterschied zwischen elseif und if - else if ??
Der einzige Unterschied besteht darin, dass bei der nicht-kaskadierenden Form einige (ggf. obsolete) Prüfungen anfallen könnten ...
Ob Du es nun kaskadiert schreibst oder nicht, ist vom Ergebnis her völlig egal!!

Vgl. hier auch den letzten Abschnitt !!
Java: 'if' Statement - 'else if' style

Gruß
Klaus
 
Zuletzt bearbeitet:

taro

Bekanntes Mitglied
Java:
Integer totalLastScan = 0;
Integer totalAllScan = 0;
Integer totalAllMakeNice = 0;

[...]

if (totalLastScan != totalAllScan) {
Das geht schief, da du mit == bzw. != nur primitive Datentypen auf die von dir gewünschte Art vergleichen kannst, du aber die Wrapper-Klassen nutzt.

Entweder du änderst dein Variablentyp in int oder du vergleichst mit equals.
 

osion

Bekanntes Mitglied
Das geht schief, da du mit == bzw. != nur primitive Datentypen auf die von dir gewünschte Art vergleichen kannst, du aber die Wrapper-Klassen nutzt.

Entweder du änderst dein Variablentyp in int oder du vergleichst mit equals.

Ich frage mich, warum es bis zur einer gewissen Anzahl (paar hundert) funktioniert und danach nicht mehr .
 

Harry Kane

Top Contributor
Integer Objekte mit Werten zwischen -128 und 127 werden in einem Pool gecacht. Werden aus einem int in dem angebenen Bereich zwei Integer Objekte gemacht, sind diese identisch, und der Vergleich mit == ergibt true.
Bei davon abweichenden int Werten werden zwei zwar inhaltsgleiche, aber nicht identische Objekte erzeugt. Dann ergibt der Vergleich mit == false, mit equals() true. Bei Strings ist es ähnlich. Hier kann der Vergleich zweier inhaltsgsleicher Strings mit "==" auch manchmal true ergeben, muss es aber nicht.
S. hier .
 

osion

Bekanntes Mitglied
Integer Objekte mit Werten zwischen -128 und 127 werden in einem Pool gecacht. Werden aus einem int in dem angebenen Bereich zwei Integer Objekte gemacht, sind diese identisch, und der Vergleich mit == ergibt true.
Bei davon abweichenden int Werten werden zwei zwar inhaltsgleiche, aber nicht identische Objekte erzeugt. Dann ergibt der Vergleich mit == false, mit equals() true. Bei Strings ist es ähnlich. Hier kann der Vergleich zweier inhaltsgsleicher Strings mit "==" auch manchmal true ergeben, muss es aber nicht.
S. hier .

Aber das beantwortet nicht die Frage warum das Ergebnis false war (console), das Programm aber nicht in die else gegangen ist. Jedenfalls funktioniert es jetzt mit equals
 

Harry Kane

Top Contributor
" Die Frage warum das Ergebnis false war (console), das Programm aber nicht in die else gegangen ist." kann zumindest ich definitiv nicht eindeutig beantworten, solange mir ein kompletter Codeabschnitt vorenthalten wird. Die von dir beschriebenen Konsolenausgaben mit "TRUE OR FALSE false" und "take" stammen jedenfalls nicht aus deinem zuletzt geposteten Schnipsel.
Das einzige was ich an deinem Ausgangspost sehe ist, daß die Ausgabe "take" bei einem Wert von 139 nicht erscheint, bei einem Wert von 2 schon, und deshalb der Vergleich mit "!=" im ersten Fall "true" ergibt (Objekte nicht identisch, obwohl offensichtlich inhaltsgleich), im zweiten Fall nicht (Objekte inhaltsgleich identisch), was wiederum im Einklang mit meinem Post oben ist.
Aber solange wir über Konsolenausgaben und Codeabschnitte reden, die nicht konsistent sind, erübrigt sich eine weitere Diskussion.
 

arilou

Bekanntes Mitglied
Aja was ist denn ein "elseif" genau?
Und warum ist das Java "else if" denn kein "elseif"?
Kann ja sein das du Recht hast, aber da wäre ein Erklärung bzw. Seite zum Nachlesen recht hilfreich.

a) Ich habe Recht;
b) Dem Wunsch nach Beleg kann entsprochen werden:
Java SE Specifications
The Java Language Specification, Java SE 8 Edition:
http://docs.oracle.com/javase/specs/jls/se8/jls8.pdf
Kapitel 14.9 "The if Statement"

Es gibt in Java kein elseif, weil es durch kaskadierte if-then-else bedeutungsgleich ersetzt werden kann, und a) so die Spezifikation sauber(er) bleibt; b) es einfach unnötig ist.
 

Joose

Top Contributor
a) Ich habe Recht;

Jein, i-Tüpfelreiter bist du einer. Ja laut den Spezifikation von Java gibt es "else if" so nicht.
Wenn ich normal von "else if" oder "if else if" rede, ist damit das "IfThenElseStatementNoShortIf"-Statement gemeint.
Klar wenn man es ganz genau nimmt reden wir von etwas was es nicht gibt, aber die Bezeichnung "else if" hat sich doch schon soweit eingebürgert das 99% der Programmierer (von unterschiedlichen Sprachen) wissen was damit gemeint ist.

Es gibt in Java kein elseif, weil es durch kaskadierte if-then-else bedeutungsgleich ersetzt werden kann, und a) so die Spezifikation sauber(er) bleibt; b) es einfach unnötig ist.

Jap aber beide Schreibweisen sind korrekt laut Spezifikationen! (StatementNoShortIf ebenso wie Statement)
 

osion

Bekanntes Mitglied
Aber das beantwortet nicht die Frage warum das Ergebnis false war (console), das Programm aber nicht in die else gegangen ist. Jedenfalls funktioniert es jetzt mit equals

Jedenfalls danke für die equals Lösung. Der Code mit der Consolenausgabe ist nicht die Welt...Mache ein System print mit den Integer und mache mir ein System print mit der Bediengung aus der If das ist alles.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M if then else geht nicht Java Basics - Anfänger-Themen 10
N "if ... else" geht nicht Java Basics - Anfänger-Themen 7
T if-else Bedingung wird ignoriert Java Basics - Anfänger-Themen 4
I If / Else in Setter? Java Basics - Anfänger-Themen 8
M If-Else Java Basics - Anfänger-Themen 5
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
laxla123 Verschachtelte If-Else Schleife Java Basics - Anfänger-Themen 21
laxla123 If-else Java Java Basics - Anfänger-Themen 4
luggas89 If else auch mit unterschiedlichen Antworten Java Basics - Anfänger-Themen 5
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
pumpgun99 Fehler Meldung "else without if" Java Basics - Anfänger-Themen 3
B Scanner-If/else kleine Abhebungs-Simulation Java Basics - Anfänger-Themen 3
A Übung Else if Java Basics - Anfänger-Themen 2
M Else wird nicht ausgeführt. Java Basics - Anfänger-Themen 5
L If und else bei 2 Dimensionalen Arrays Java Basics - Anfänger-Themen 8
F if else if anfängerfrage Java Basics - Anfänger-Themen 22
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
T "Einkauf" & if else Struktur Java Basics - Anfänger-Themen 7
steven789hjk543 Input mit if-else Java Basics - Anfänger-Themen 23
H ERGÄNZUNGSFRAGE: Klammersetzung bei if-else Anweisungen und Schleifen Java Basics - Anfänger-Themen 2
A break; mit Einfluss hinter else if Block Java Basics - Anfänger-Themen 3
R else without if error Java Basics - Anfänger-Themen 5
F Methoden Verschachtelte if else Methode Java Basics - Anfänger-Themen 10
M Java Taschenrechner (if-else) Java Basics - Anfänger-Themen 11
C Variablen 'else' without 'if' Java Basics - Anfänger-Themen 4
F If - Else Java Basics - Anfänger-Themen 3
F Variablen If else: Einer Variable einen Wert hinzufügen oder so? Java Basics - Anfänger-Themen 6
I if/else Statements Java Anfänger Java Basics - Anfänger-Themen 14
M jOptionPane mit if else Java Basics - Anfänger-Themen 16
K Frage zu If & else if Java Basics - Anfänger-Themen 5
R else if anweisungen Java Basics - Anfänger-Themen 2
Y Problem mit If-Else Verzweigung! Java Basics - Anfänger-Themen 9
A Warum funktioniert switch aber nicht if/else? Java Basics - Anfänger-Themen 23
Hijo2006 If-else Java Basics - Anfänger-Themen 6
P Erste Schritte Taschenrechner mit if-else Anweisung Java Basics - Anfänger-Themen 6
T If/ Else If (zurückkehren) Java Basics - Anfänger-Themen 4
O Grosse If / Else verschachtelung übersichlitcher gestlten Java Basics - Anfänger-Themen 6
S Erste Schritte Unterschied "if" und "else if" Java Basics - Anfänger-Themen 27
M If in einem else Java Basics - Anfänger-Themen 14
A boolean Methode ohne If und else Java Basics - Anfänger-Themen 1
J Mehrere IF Anweisungen und dazugehörige ELSE Java Basics - Anfänger-Themen 6
C else in if umschreiben Java Basics - Anfänger-Themen 2
J Fehlermeldung else without if Java Basics - Anfänger-Themen 5
P Compiler-Fehler wieso zeigt der compiler ein else without if? Java Basics - Anfänger-Themen 3
E If...else... Java Basics - Anfänger-Themen 7
G Mehrere If-else-Sätze der Reihe nach durchlaufen lassen Java Basics - Anfänger-Themen 2
C If Else Frage Java Basics - Anfänger-Themen 2
M if, else Anweisung Java Basics - Anfänger-Themen 3
J Ergebnis wird gespammt sowie eine else if Frage Java Basics - Anfänger-Themen 2
A instanceof-if-else-Anweisungen eleganter lösen Java Basics - Anfänger-Themen 5
V Operatoren Java if-else argument Java Basics - Anfänger-Themen 4
D Keine Funktion bei "else" Java Basics - Anfänger-Themen 5
P [ANFÄNGER] if else funktioniert nicht Java Basics - Anfänger-Themen 4
T If, else Problem Java Basics - Anfänger-Themen 12
C IF-Else Verknüpfungen Java Basics - Anfänger-Themen 10
Uzi21 if - else Abfrage Java Basics - Anfänger-Themen 6
T Problem im If-Else-Statement Java Basics - Anfänger-Themen 4
R if funktion ohne else - Bedingung trifft nicht zu, ausgabe nicht nachvollziehbar Java Basics - Anfänger-Themen 7
T If ; else error on system token delete Java Basics - Anfänger-Themen 5
N Best Practice Stilistische Anwendung von if/else-Abfragen Java Basics - Anfänger-Themen 7
L else without if Fehler Java Basics - Anfänger-Themen 14
F try/catch - (else) Java Basics - Anfänger-Themen 11
H Worauf bezieht sich die erste else-Anweisung Java Basics - Anfänger-Themen 9
S if und else problem... Java Basics - Anfänger-Themen 13
Q if-else Logikproblem Java Basics - Anfänger-Themen 4
M Probleme mit else if Java Basics - Anfänger-Themen 15
M Erste Schritte Break-Anweisung bei if-else Java Basics - Anfänger-Themen 6
B OOP If und else in Main class einbinden Java Basics - Anfänger-Themen 9
T Erste Schritte switch case Anweisung und if else Verzweigungen? Java Basics - Anfänger-Themen 6
K Bedingungen else Java Basics - Anfänger-Themen 7
B if-else in einer schleife Java Basics - Anfänger-Themen 14
J Erste Schritte If-Else Idee gesucht Java Basics - Anfänger-Themen 6
T if else Java Basics - Anfänger-Themen 8
R boolean, if-else Java Basics - Anfänger-Themen 7
P int-Wertevergleich mit if-else-Verzweigung Java Basics - Anfänger-Themen 3
P If-else-Verzweigung Java Basics - Anfänger-Themen 9
E Compiler-Fehler Fehler: else without if Java Basics - Anfänger-Themen 11
D Java Einsteiger (boolean, if-else etc.) Java Basics - Anfänger-Themen 7
I Methoden Problem If/Else; Public Void Java Basics - Anfänger-Themen 6
P Anzahl der else if Operatoren begrenzt?? Java Basics - Anfänger-Themen 7
K Mal wieder ein Problem mit If / Else Java Basics - Anfänger-Themen 10
K Anfänger If / Else Problem Java Basics - Anfänger-Themen 5
C if else Abfrage Java Basics - Anfänger-Themen 11
T Umschreiben von switch in if else und umgekehrt Java Basics - Anfänger-Themen 9
C Schleifen, if, else......? Java Basics - Anfänger-Themen 8
2 if und else Java Basics - Anfänger-Themen 9
L If/else nicht korrekt ausgeführt. Java Basics - Anfänger-Themen 22
E Verschachtelte If-Anweisungen - "else without if" Java Basics - Anfänger-Themen 4
S Brauche Hilfe bei if/else Java Basics - Anfänger-Themen 3
S if-else Java Basics - Anfänger-Themen 22
A ein if else problem Java Basics - Anfänger-Themen 13
N If-else-If Leiter Java Basics - Anfänger-Themen 9
U Dringend: Syntax error on token "else" Java Basics - Anfänger-Themen 8
L if else anweisung Java Basics - Anfänger-Themen 2
M If/Else mit Zahlenfolge Java Basics - Anfänger-Themen 13
B Problem mit Variable und if/else Java Basics - Anfänger-Themen 6
H alternativen zu if .. else .. Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben