web-dev-qa-db-fra.com

inline si la déclaration Java, pourquoi ne fonctionne pas

Desc: CompareChar renvoie true ou false . Si true, définit la valeur de button, si false ne fait rien.

J'essaie d'utiliser: If compareChar (curChar, toChar ("0"))? getButtons (). get (i) .setText ("§");

netbeans dit: ')' excepté ':' excepté

j'ai essayé ces combinaisons:

if compareChar(curChar, toChar("0")) ? getButtons().get(i).setText("§");
if compareChar(curChar, toChar("0")) ? getButtons().get(i).setText("§") : ;
if compareChar(curChar, toChar("0")) ? getButtons().get(i).setText("§") : 

if (compareChar(curChar, toChar("0"))) ? getButtons().get(i).setText("§");
if (compareChar(curChar, toChar("0"))) ? getButtons().get(i).setText("§") : ;
if (compareChar(curChar, toChar("0"))) ? getButtons().get(i).setText("§") : 

Je vous remercie

13
Erik Kubica

L'opérateur ternaire ? : doit renvoyer une valeur, ne l'utilisez pas si vous souhaitez utiliser if pour le contrôle de flux.

if (compareChar(curChar, toChar("0"))) getButtons().get(i).setText("§");

fonctionnerait assez bien.

http://Java.about.com/b/2009/06/06/Java-term-of-the-week-ternary-operator.htm

17
Guillaume

La syntaxe est indiquée ci-dessous:

"your condition"? "step if true":"step if condition fails"
48
Sach

(inline if) en Java ne fonctionnera pas si vous utilisez l'instruction 'if'. la syntaxe correcte est décrite dans l'exemple suivant: 

int y = (c == 19) ? 7 : 11 ; 

ou 

String y = (s > 120) ? "Slow Down" : "Safe";
System.out.println(y);

comme vous pouvez voir le type de la variable Y est le même que la valeur de retour ... 

dans votre cas, il est préférable d'utiliser l'instruction if normale, non en ligne si elle est dans la réponse précédente sans "?"

if (compareChar(curChar, toChar("0"))) getButtons().get(i).setText("§");
20
Zuhair Sagga
cond? statementA: statementB

Égal à:

if (cond)
    statementA
else
    statementB

Pour votre cas, vous pouvez simplement supprimer tous les "si". Si vous utilisez totalement if-else au lieu de?:. Ne les mélangez pas ensemble.

1
TieDad

Vos cas n'ont pas de valeur de retour.

getButtons().get(i).setText("§");

In-line-if est une opération ternaire. Toutes les opérations ternaires doivent avoir une valeur de retour. Cette variable est probablement nulle et ne renvoie rien et elle ne retourne pas à une variable. Exemple:

int i = 40;
String value = (i < 20) ? "it is too low" : "that is larger than 20";

pour votre cas, vous avez juste besoin d'une déclaration if.

if (compareChar(curChar, toChar("0"))) { getButtons().get(i).setText("§"); }

Notez également que vous devez utiliser des accolades pour rendre le code plus lisible et déclarer la portée.

0
GetBackerZ

Cela devrait être (Condition)? Déclaration vraie: déclaration fausse

Laissez le "si"

0
Ndivhuwo