2011-10-22 5 views
3

J'essaye de compiler ce code, mais mon compilateur (BlueJ) me dit le || ne peut pas être appliqué à java.lang.string.java.lang.stringOpérateur || ou | ne peut pas être utilisé

import java.io.*; 
import javax.swing.JOptionPane; 

class Hi { 
public static void main (String [] args){ 

String Answer; 
Answer = JOptionPane.showInputDialog("Who is a troll?"); 
if (Answer.equals ("null")) 
{ 
JOptionPane.showMessageDialog(null, "You forgot to enter an answer before pressing 'ok'."); 
} 
else if (Answer.equals("Bob" || "Bob" || "Charlie Sheen")) 
{ 
JOptionPane.showMessageDialog(null, "Your answer is incorrect."); 
} 
else 
JOptionPane.showMessageDialog(null, "Yes, " + Answer + ", is definitely a douchebag."); 

System.exit(0); // not needed to run 

} 
} 

Merci sooo beaucoup pour l'aide

+1

Qu'attendez-vous de "" Bob "|| "Bob" || "Charlie Sheen" 'évaluer? –

+1

Toutes les réponses données ici sont valables, mais ne pensez-vous pas que ce serait amusant de pouvoir comparer des cordes d'une manière suggérée par Mot39 (ie "(Answer.equals (" Bob "||" Bob "|| "Charlie Sheen"))")? –

+0

@WojtekO .: Vous voulez le langage Icon pour cela, c'est le premier concept qu'ils introduisent dans [l'introduction] (http://www.cs.arizona.edu/icon/intro.htm). – millimoose

Répondre

5

Essayez

if (Answer.equals("Bob") || Answer.equals("Charle") {}

Comme Bozho souligne, s'il vous plaît bâton aux normes de codage Java décrites dans la section Naming Conventions des conventions de codage Java.

8

Vous ne pouvez pas faire comme ça. L'opérateur || attend deux opérandes booléens, et les vôtres sont des chaînes. Vous devez vérifier chaque égalité séparément:

if (answer.equals("Bob") || answer.equals("Charlie Sheen")) { 
} 

Quelques sidenotes:

  • noms de variables doivent être en minuscules (par convention).
  • vous ne devez pas fournir deux fois la même chaîne ("Bob").
  • null n'est pas la même que "null". Vous devriez comparer answer == null. Si vous essayez d'appeler .equals(..) sur un objet null, vous obtiendrez une exception
+0

Merci beaucoup les gars, je suppose que c'était logique dans ma tête mais pas dans la réalité. – Mot39

+1

@Mot yup. Vous êtes invité à choisir une réponse et à la marquer comme acceptée (si cela vous a aidé) – Bozho

3

Vous ne pouvez pas appliquer l'opérateur logique OR à cordes opérandes.

Essayez:

if (Answer.equals("Bob") || Answer.equals("Charlie Shee")) 
1

Les réponses précédentes travailleront.

if (Answer.equals("Bob") || Answer.equals("Charlie Shee")) 

Mais il est préférable de prendre la bonne habitude de cette ecriture comme:

if ("Bob".equals(Answer) || "Charlie Shee".equals(Answer)) 

pour éviter un accident éventuel si réponse devient nulle.

1

Comme d'autres l'ont indiqué: ceci ne fonctionnera pas car ce n'est pas une syntaxe valide pour les égales. Une solution moins verbeuse pourrait être:

if (Arrays.asList("Bob", "Bob", "Charlie Sheen").contains(Answer)) 
Questions connexes