Wie kann ich diesen Code in Java vereinfachen?
boolean b = false;
public void schalte() {
if (b) {
System.out.println("0");
b = false;
}
else {
System.out.print("1");
b = true;
}
}
5 Antworten
public void schalte() {
String command = b ? "0" : "1";
System.out.print(command);
b = !b;
}
Ungetestet. Zudem könntest du deine Bezeichner (also Variablen und Funktionen) vernünftig benennen und ausserdem wäre es wichtig, wenn du meinen Code nicht nur einfach rauskopierst, sondern wirklich verstehst, was da passiert - ansonsten schreib lieber eine längere Lösung, die du dafür aber auch kapierst.
public void schalte(){
System.out.println(b ? "0" : "1");
b = !b;
}
dann kannst du noch die Variable von außerhalb in die Methode selbst verlagern und den neuen Wert returnen
boolean b = false;
public void schalte(){
System.out.println((b = !b) ? "1" : "0");
}
Sehr viel kürzer dürfte kaum gehen.
Ich habe beides gemacht.
In Java (und einigen anderen Sprachen auch) kann man eine Zuweisung als Statement verwenden, dessen Wert dem zugewiesenen Wert entspricht.
Es wird also zuerst b auf "nicht" b gesetzt und dann das Ergebnis direkt in der Bedingung weiterverwendet.
Es gibt in JAVA Anweisungen und Ausdrücke. Das ist eine Schreibweise als Ausdruck.
Danke für die schnelle Antwort, ich denke das ist die kürzeste von allen :)
Wenn schon mit Crap-Code nach Crap-Code gefragt wird: Warum dann überhaupt die interne Darstellung von der äußeren Darstellung trennen?
static int b = 0;
public static void schalte(){
System.out.println((b = (b + 1) % 2));
}
Kommt drauf an. Wenn der Code alles ist und immer so statisch bleibt, reicht
System.out.print("1");
b = true;
Ich nehme aber mal an, du willst das mehrmals aufrufen, dann kannst du höchstens das 'else' weglassen.
Könntest du mir nur schnell erklären wie genau "(b = !b)" funktioniert, bzw. wieso du eine Zuweisung anstelle der Bedingung geschrieben hast?