2017-02-23 27 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個小時在網上搜索這個答案哈哈! –

相關問題