2010-06-16 4 views
1

Je vais avoir un problème de compilation mon programme Java:« Type inattendu » erreur

 
\Desktop\Java Programming\JFrameWithPanel.java:79: unexpected type 
required: variable 
found : value 
      if(serviceTerms.isSelected() = false) 
            ^
1 error 

Ce qui est à l'origine de cette erreur?

public class JFrameWithPanel extends JFrame implements ActionListener, ItemListener 
{ 
    int packageIndex; 
    double price; 
    double[] prices = {49.99, 39.99, 34.99, 99.99}; 

    DecimalFormat money = new DecimalFormat("$0.00"); 
    JLabel priceLabel = new JLabel("Total Price: "+price); 
    JButton button = new JButton("Check Price"); 
    JComboBox packageChoice = new JComboBox(); 
    JPanel pane = new JPanel(); 
    TextField text = new TextField(5); 
    JButton accept = new JButton("Accept"); 
    JButton decline = new JButton("Decline"); 
    JCheckBox serviceTerms = new JCheckBox("I Agree to the Terms of Service.", false); 
    JTextArea termsOfService = new JTextArea("This is a text area", 5, 10); 


    public JFrameWithPanel() 
    { 
     super("JFrame with Panel"); 

     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     pane.add(packageChoice); 
     setContentPane(pane); 
     setSize(250,250); 
     setVisible(true); 

     packageChoice.addItem("A+ Certification"); 
     packageChoice.addItem("Network+ Certification "); 
     packageChoice.addItem("Security+ Certifictation"); 
     packageChoice.addItem("CIT Full Test Package"); 

     pane.add(button); 
     button.addActionListener(this); 

     pane.add(text); 
     text.setEditable(false); 
     text.setBackground(Color.WHITE); 
     text.addActionListener(this); 

     pane.add(termsOfService); 
     termsOfService.setEditable(false); 
     termsOfService.setBackground(Color.lightGray); 

     pane.add(serviceTerms); 
     serviceTerms.addItemListener(this); 

     pane.add(accept); 
     accept.addActionListener(this); 

     pane.add(decline); 
     decline.addActionListener(this); 
    } 

    public void actionPerformed(ActionEvent e) 
    { 
     packageIndex = packageChoice.getSelectedIndex(); 
     price = prices[packageIndex]; 
     text.setText("$"+price); 

     Object source = e.getSource(); 

     if(source == accept) 
     { 
      if(serviceTerms.isSelected() = false) // line 79 
      { 
       JOptionPane.showMessageDialog(null,"Please accept the terms of service."); 
      } 
      else 
      { 
       JOptionPane.showMessageDialog(null,"Thanks."); 
      } 
     } 
    } 
+0

Je ne veux pas compter 79 lignes: quelle ligne est-ce? –

+0

Où est la ligne 79? – Skilldrick

+0

@Richard Grands esprits :) – Skilldrick

Répondre

8

Vous avez une affectation (illégale) au lieu d'une comparaison. Sûrement vous dire:

if (serviceTerms.isSelected() == false) 

Bien sûr, le préférentiel, et plus lisible, façon d'écrire cette condition est la suivante:

if (!serviceTerms.isSelected()) 
+2

ou si (! ServiceTerms.isSelected()) –

+0

Je pensais que 1 = était booléen –

+0

Eh bien, cela l'a fait. Question répondue. Merci. Je le marque comme correct. –

4

Le problème est que vous utilisez l'opérateur d'affectation =. Ce que vous devez utiliser est l'opérateur d'égalité == comme ce qui suit:

if(serviceTerms.isSelected() == false) // line 79 
{ 
    JOptionPane.showMessageDialog(null,"Please accept the terms of service."); 
} 

Ou, pour totalement contourner cette erreur, vous devez sauter à comparer false et utilisez l'opérateur ! (pas) comme si.

if(!serviceTerms.isSelected()) // line 79 
{ 
    JOptionPane.showMessageDialog(null,"Please accept the terms of service."); 
} 

Je pense que cette façon se lit mieux.

Dans le cas contraire, les termes de service est sélectionné

qui se lit plus comme une phrase que:

Si les conditions de service est sélectionné est false

Questions connexes