Breve istruzione IF – ELSE

Sto cercando di rendere il mio codice più leggibile, quindi ho deciso di utilizzare alcune brevi istruzioni IF.

Ecco il mio codice che non funziona (“non una dichiarazione”):

jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false); 

Cosa c’è di sbagliato in questo? Bisogno di parentesi? Dove?

La “espressione ternaria” x ? y : z x ? y : z può essere utilizzato solo per l’ assegnazione condizionale. Cioè, potresti fare qualcosa come:

 String mood = inProfit() ? "happy" : "sad"; 

perché l’espressione ternaria restituisce qualcosa (di tipo String in questo esempio).

In realtà non è pensato per essere usato come un breve, in-line if-else . In particolare, non è ansible utilizzarlo se le singole parti non restituiscono un valore o restituiscono valori di tipi incompatibili. (Quindi, mentre è ansible farlo se entrambi i metodi hanno restituito lo stesso valore, non è necessario richiamarlo solo per gli effetti collaterali).

Quindi il modo corretto per farlo sarebbe solo con un blocco if-else:

 if (jXPanel6.isVisible()) { jXPanel6.setVisible(true); } else { jXPanel6.setVisible(false); } 

che ovviamente può essere abbreviato

 jXPanel6.setVisible(jXPanel6.isVisible()); 

Entrambe queste ultime espressioni sono, per me, più leggibili in quanto comunicano più chiaramente ciò che stai cercando di fare. (E a proposito, hai sbagliato le tue condizioni? Sembra che questo sia un no-op in ogni caso, piuttosto che un interruttore).

Non confondere il basso numero di caratteri con la leggibilità . Il punto chiave è ciò che è più facilmente comprensibile; e il maltrattamento delle caratteristiche linguistiche è un modo preciso per confondere i lettori, o almeno farli fare un doppio gioco mentale.

 jXPanel6.setVisible(jXPanel6.isVisible()); 

o nella tua forma:

 jXPanel6.setVisible(jXPanel6.isVisible()?true:false); 

L’operatore ternario può essere solo il lato destro di un compito e non una sua propria affermazione.

http://www.devdaily.com/java/edu/pj/pj010018/

Come altri hanno indicato, qualcosa della forma

 x ? y : z 

è un’espressione, non un’affermazione (completa). È un valore che deve essere usato da qualche parte – come sul lato destro di un compito, o un parametro su una funzione, ecc.

Forse potresti dare un’occhiata a questo: http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html

Sono un po ‘in ritardo per la festa ma per i futuri lettori.

Da quello che posso dire, vuoi semplicemente triggersre lo stato di visibilità giusto? Perché non usare solo il ! operatore?

 jxPanel6.setVisible(!jxPanel6.isVisible); 

Non è un’istruzione if, ma preferisco questo metodo per il codice relativo al tuo esempio.