2013-08-01 47 views
0

我正在嘗試創建註冊系統。我有6個複選框,我想要發生的是如果我檢查其中一個複選框並按下按鈕compute,它應該給該標籤的值爲2640.當我單擊另一個複選框並再次按下按鈕時,計算標籤是5280等,如果我點擊所有6個複選框。使用複選框添加值?

如果其中一個複選框沒有被點擊,我按下了計算按鈕,它應該從當前總數中減去2640。這是我的代碼:

if (chkPLF.isSelected() == true) { 
    tFee = 2640; 
    lblMis.setText(Double.toString(misFee)); 
    lblT.setText(Double.toString(tFee + tFee)); 

    if (chkPLF.isSelected() == false) { 
     tFee = tFee - 2640; 
     lblMis.setText(Double.toString(misFee)); 
     lblT.setText(Double.toString(tFee)); 
    } 
} 
if (chkSAD.isSelected() == true) { 
    tFee = 2640 * 3; 
    lblMis.setText(Double.toString(misFee)); 
    lblT.setText(Double.toString(tFee)); 

    if (chkSAD.isSelected() == false) { 
     tFee = tFee - 2640; 
     lblMis.setText(Double.toString(misFee)); 
     lblT.setText(Double.toString(tFee)); 
    } 
} 

它只顯示當前值,但不會減去。請幫忙!

+0

爲什麼,爲什麼你比較真==真或真==假,在IF語句? – EProgrammerNotFound

+0

爲什麼不計算點擊複選框的數量是結果的2640倍?現在,你似乎用每個複選框覆蓋結果... – MadProgrammer

回答

1

爲什麼不指望被點擊的多個結果通過2640現在checkboxs的數量,你似乎是壓倒一切的,結果每個複選框...

例如...

int checkCount = 0; 
if (chk1.isSelected()) { 
    checkCount++; 
} 
if (chk2.isSelected()) { 
    checkCount++; 
}  
if (chk3.isSelected()) { 
    checkCount++; 
}  
if (chk4.isSelected()) { 
    checkCount++; 
}  
if (chk5.isSelected()) { 
    checkCount++; 
}  
if (chk6.isSelected()) { 
    checkCount++; 
} 

tFee = 2640 * checkCount; 
lblMis.setText(Double.toString(misFee)); 
lblT.setText(Double.toString(tFee)); 

現在,我要走了,這可能是更容易與一個循環完成了...

JCheckBox[] boxes = new JCheckBox[]{chk1, chk2, chk3, chk4, chk5, chk6}; 
tFee = 0; 
for (JCheckBox box : boxes) { 
    if (box.isSelected()) { 
     tFee += 2640; 
    } 
} 
lblMis.setText(Double.toString(misFee)); 
lblT.setText(Double.toString(tFee)); 

但也許是因爲我瘋了...

+0

謝謝你的工作! – Glen

1
double amount = 0; 
int sel = 0; 
if(jCheckBox1.isSelected()) sel++; 
if(jCheckBox2.isSelected()) sel++; 
if(jCheckBox3.isSelected()) sel++; 
if(jCheckBox4.isSelected()) sel++; 
if(jCheckBox5.isSelected()) sel++; 
if(jCheckBox6.isSelected()) sel++; 
amount = 2640 * sel; 
JOptionPane.showMessageDialog(rootPane, String.valueOf(amount)); 

將這個代碼在「計算」點擊ActionListener

+0

對於這個想法,雖然我會推薦在你的周圍使用大括號如果語句,因爲它可以防止可能的問題 - 但這只是我 – MadProgrammer

+0

@MadProgrammer是的,我也是,但這只是一個快速的代碼,以顯示算法。無論如何,供將來參考:一行代碼不需要大括號。另一方面,有多條線路,這將是必要的 – EProgrammerNotFound

+0

我提出的唯一原因是我們傾向於看到邏輯錯誤araise,因爲人們或者錯開大括號或分號:P。 – MadProgrammer