2014-02-21 38 views
0

我在這裏有一個小程序程序,允許用戶從下拉列表中選擇一個電影,然後選擇一些票。應顯示一個複選框以供用戶點擊,以便他們可以獲得日程安排電影的折扣。用戶應該能夠點擊一個計算價格按鈕來顯示總成本和一個清除按鈕來清除每個下拉列表和複選框。該程序編譯,但當我點擊計算按鈕時,它產生了很多錯誤代碼,如java.lang.nullPointerException和更多。我只是想讓程序正常工作,請幫助我。請參考下面的代碼:Applet不會計算

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

public class Proj4exe2 extends Applet implements ItemListener, ActionListener 
{ 
Choice movieChoice = new Choice(); 
Button calcButton = new Button("CALCULATE"); 
Choice ticketsChoice = new Choice(); 
Button clearButton = new Button("CLEAR"); 
Checkbox matineeBox = new Checkbox("Matinee Discount", false); 
Label outputLabel = new Label(""); 
int i = 1; 
int size; 
double presyoKo[]; 
double totalPresyo = 0.00; 
double diskwento; 

public void init() 
{ 
setBackground(Color.yellow); 
add(new Label("Welcome to ENCORE MOVIES")); 
add(new Label("Please choose a movie:")); 
add(movieChoice); 
movieChoice.addItem("My Little Bossings"); 
movieChoice.addItem("Pagpag"); 
movieChoice.addItem("San Pedro Calungsod"); 
movieChoice.addItem("Kimi Dora Prequel"); 
movieChoice.addItem("10,000 Hours"); 
    movieChoice.addItem("Girl, Boy, Bakla, Tomboy"); 
    movieChoice.addItem("Boy Golden"); 
    movieChoice.addItem("Kaleidoscope World"); 
movieChoice.addItemListener(this); 
add(calcButton); 
calcButton.addActionListener(this); 
add(ticketsChoice); 
ticketsChoice.addItem("0"); 
ticketsChoice.addItem("1"); 
ticketsChoice.addItem("2"); 
ticketsChoice.addItem("3"); 
ticketsChoice.addItem("4"); 
ticketsChoice.addItem("5"); 
ticketsChoice.addItem("6"); 
ticketsChoice.addItem("7"); 
ticketsChoice.addItem("8"); 
ticketsChoice.addItem("9"); 
ticketsChoice.addItem("10"); 
ticketsChoice.addItem("11"); 
ticketsChoice.addItem("12"); 
ticketsChoice.addItem("13"); 
ticketsChoice.addItem("14"); 
ticketsChoice.addItem("15"); 
ticketsChoice.addItemListener(this); 
add(clearButton); 
clearButton.addActionListener(this); 
add(matineeBox); 
matineeBox.addItemListener(this); 
add(outputLabel); 
} 
public void actionPerformed(ActionEvent e) 
{ 
    String args = e.getActionCommand(); 
    if(args == "CALCULATE") 
    { 

     size = i++; 
     presyoKo[i] = Double.parseDouble(ticketsChoice.getSelectedItem()); 

     totalPresyo = presyoKo[i] * 50.0; 
     outputLabel.setText("Your charge is " + totalPresyo + ". Thank you."); 
     } 
     if(args == "CLEAR") 
     { 
      movieChoice.select(0); 
      ticketsChoice.select(0); 
      matineeBox.setState(false); 
      outputLabel.setText(""); 
      } 
    } 
    public void itemStateChanged(ItemEvent ee) 
    { 
     diskwento = (totalPresyo * .25); 
     if(matineeBox.getState() == true) 
     { 
      totalPresyo = totalPresyo - diskwento; 
      } 
     } 
} 

applet代碼:

<html> 
<applet code = "Proj4exe2.java" height = "450" width = "450"> 
</applet code> 
</html> 

原諒我的笨拙的設計,因爲我沒有創建一個佈局管理器。我非常歡迎提示和意見,以進一步改進此計劃的代碼。非常感謝!

+1

調試我的朋友的初始化

編輯

之前,而不是!沒有人可以告訴你修復NPE,除非你指出行號 – sanbhat

+0

一個問題是這樣的。'args ==「CALCULATE」'..將其改爲'args.equals(「CALCULATE」)'。 –

+0

使用按鈕的getActonCommand()方法。通過Java NetBeans或其他Java IDE可以輕鬆完成此操作。 – ryndgmn

回答

1

double presyoKo[];在actionPerformed是在使用它使用數組使用ArrayList和不斷加入到它

ArrayList<Double> ticketPrices = new ArrayList<Double>(); 
... 
... actionPerformed(...) ... 
    double qty = Double.parseDouble(ticketsChoice.getSelectedItem()); 
    ticketPrices.add(qty * 50); 
+0

所以我應該在actionPerformed中放置雙重presyoKo []? – ryndgmn

+0

這會導致錯誤「變量presyoKo []可能沒有被初始化」,當我將它放在String參數之前的actionPerformed中時。 – ryndgmn