Operatoren Kleiner-Zeichen in Größer-Zeichen ändern wenn boolen true?

DStrohma

Bekanntes Mitglied
Hallo,

ich habe folgendes IF-Statement:
Code:
if(collator.compare(stringArray[i], stringArray[j]) > 0) {
// Hier passiert irgendwas
}

Hier spielt es keine Rolle um was es genau in dem IF-Statement geht. Mir geht es nur darum, dass ich jetzt das ">" in ein "<" ändern will wenn eine bestimmte Boolean-Variable TRUE ist. Geht sowas?
Das einzige was ich bisher logischer Weise hinbekommen habe ist das hier:
Code:
if (bool) {
	if(collator.compare(stringArray[i], stringArray[j]) > 0) {
		// Hier passiert irgendwas
	}
} else {
	if(collator.compare(stringArray[i], stringArray[j]) < 0) {
		// Hier passiert irgendwas
	}
}

Das spiegelt genau das dar was ich machen will nur kann ich nicht glauben dass es keinen anderen Weg gibt also den Code praktisch doppelt zu haben obwohl er (fast) gleich ist. Irgendwelche Ideen?
 
Das, was du vorhast, geht nicht. Habe sowas zumindest noch nie gesehen.

Eine kürzere Variante könntest du aber so schreiben:
Java:
int result = bool ? 
	collator.compare(stringArray[i], stringArray[j]) > 0 :	
    collator.compare(stringArray[i], stringArray[j]) < 0;

Du wirst aber drumherum kommen, den Code doppelt zu schreiben.
 
Sehe ich auch so @MrClave

Und wenn er bei IF bleiben möchte, finde ich

Java:
	if (collator.compare(stringArray[i], stringArray[j]) > 0) {
			// Hier passiert irgendwas
	} else if (collator.compare(stringArray[i], stringArray[j] < 0) {
			// Hier passiert irgendwas
	}

lesbarer, als die Variante von ihm.
 
Da gibt es viele Möglichkeiten.
z.B.
Java:
if(bool ^ collator.compare(stringArray[i], stringArray[j]) > 0) {
} else {
}

Java:
boolean b = collator.compare(stringArray[i], stringArray[j]) > 0;
if(bool) b = !b;
if(b) {
} else {
}

Java:
if(!bool && collator.compare(stringArray[i], stringArray[j]) > 0 ||
    bool && collator.compare(stringArray[i], stringArray[j]) <= 0) {
} else {
}
 

Zurück
Oben