2017-02-23 51 views
2

我的Java applet分配有问题。出于某种原因,我无法弄清楚,每当我查看一个复选框时,我的所有if语句立即启动。该程序应该更新总价格,并在每次按下一个方框时通知用户。我们必须使用复选框而不是单选按钮或JCheckBox,并且程序必须被编写为applet。这里是我的代码的链接。为什么我所有的if语句立刻开始? (Java)

// Classes 
import java.awt.*;                        
import java.applet.*;                       
import java.awt.event.*;                       


@SuppressWarnings("serial")                      
public class ReasonableComputersChristiansen extends Applet implements ItemListener        
{ 
// Variables 
     Image logo;                        
     double basePrice;                      

     Label companyLabel = new Label("Reasonable Computers");             
     Label instructionLabel = new Label("Please select your desired peripherals from the list below");  
     Label outputLabel = new Label("TOTAL PRICE: ");               

     Checkbox printerBox = new Checkbox("Ink Waster 9000");             
     Checkbox monitorBox = new Checkbox("EvilCorp Monitor");             
     Checkbox keyboardBox = new Checkbox("Clickity-Clackity Keyboard");          
     Checkbox mouseBox = new Checkbox("Worst-Aim Laser Gaming Mouse");          
     Checkbox joystickBox = new Checkbox("Crash and Burn X-2 Joystick");          
     Checkbox webcamBox = new Checkbox("Not-So-Anonymous Webcam");           


// Components 
    public void init()                       
     { 
     add(companyLabel);                      
     add(instructionLabel);                     
     add(printerBox);                       
     printerBox.addItemListener(this);                  
     add(monitorBox);                       
     monitorBox.addItemListener(this);                  
     add(keyboardBox);                      
     keyboardBox.addItemListener(this);                  
     add(mouseBox);                       
     mouseBox.addItemListener(this);                   
     add(joystickBox);                      
     joystickBox.addItemListener(this);                  
     add(webcamBox);                       
     webcamBox.addItemListener(this);                   
     add(outputLabel);                      
     logo = getImage(getDocumentBase(), "logo.gif");               
     } 

// Actions 
    public void itemStateChanged(ItemEvent e)                 
     { 
     basePrice = 575.00;                      

     if (printerBox.getState());                    
      { 
      basePrice += 69.99;                     
      System.out.println("Printer added!");                
      } 
     if (monitorBox.getState());                    
      { 
      basePrice += 125.49;                     
      System.out.println("Monitor added!");                
      } 
     if (keyboardBox.getState());                    
      { 
      basePrice += 55.59;                     
      System.out.println("Keyboard added!");                
      } 
     if (mouseBox.getState());                    
      { 
      basePrice += 19.99;                     
      System.out.println("Mouse added!");                 
      } 
     if (joystickBox.getState());                    
      { 
      basePrice += 224.97;                     
      System.out.println("Joystick added!");                
      } 
     if (webcamBox.getState());                    
      { 
      basePrice += 99.19;                     
      System.out.println("Webcam added!");                 
      } 
     } 
// Output 
    public void output()                       
     { 
      outputLabel.setText("TOTAL PRICE: $" + (basePrice));             
    } 
} 
+2

检查';单曲 – tkausl

回答

2

您的if语句后面不应有分号。

更正代码:

public void itemStateChanged(ItemEvent e)                 
    { 
    basePrice = 575.00;                      

    if (printerBox.getState())                    
     { 
     basePrice += 69.99;                     
     System.out.println("Printer added!");                
     } 
    if (monitorBox.getState())                    
     { 
     basePrice += 125.49;                     
     System.out.println("Monitor added!");                
     } 
    if (keyboardBox.getState())                   
     { 
     basePrice += 55.59;                     
     System.out.println("Keyboard added!");                
     } 
    if (mouseBox.getState())                    
     { 
     basePrice += 19.99;                     
     System.out.println("Mouse added!");                 
     } 
    if (joystickBox.getState())                   
     { 
     basePrice += 224.97;                     
     System.out.println("Joystick added!");                
     } 
    if (webcamBox.getState())                    
     { 
     basePrice += 99.19;                     
     System.out.println("Webcam added!");                 
     } 
    } 

分号结束你的if语句,以便它们实际上并不影响代码运行什么。

坚持,但不会导致大括号的语法错误,然后呢?

没有。就Java而言,可以使用花括号来组织,并且不会抛出语法错误。在大多数情况下,应该你这样做?不,但你能做到吗?技术上,是的。

(的告诫“在大多数情况下”是当你需要故意把变量在一个特定的范围内,如安迪·特纳提到)

+1

“你应该做的没有“。除了想要将变量放在紧密的范围内时。 –

+0

哦,简单的花括号创建一个新的范围?棒极了。我没有意识到这一点。 –

+1

非常感谢!我花了大约4个小时在网上搜索这个答案哈哈! –