我有这个代码,在我的程序中我使用复选框。如果选中复选框,则必须在if语句中执行该语句,但即使未选中复选框,我的程序也会执行所有“if语句”。
public void onClickMakeTransactionButton(){
chkAirtime = (CheckBox) findViewById(R.id.chkAirtime);
chkElectricity = (CheckBox) findViewById(R.id.chkElectricity);
chkWater = (CheckBox) findViewById(R.id.chkWater);
chkTransfer = (CheckBox) findViewById(R.id.chkTransfers);
chkWithdrawal = (CheckBox) findViewById(R.id.chkWithdrawal);
chkPayDstv = (CheckBox) findViewById(R.id.chkPayDstv);
final TextView savingsBalance = (TextView) findViewById(R.id.txtSavingsBalance);
savingsBalance.setText("Your Balance is: " + balance);
btnMakeTransaction = (Button) findViewById(R.id.btnMakeTransaction);
btnMakeTransaction.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
StringBuffer result = new StringBuffer();
//This are the if statements for my check boxes. My program executes the if statements even if the check boxes are not checked. what could be the problem. please help
if (result == result.append("Airtime: ").append(chkAirtime.isChecked())) {
balance = balance - 50;
}
if (result == result.append("Electricity: ").append(chkElectricity.isChecked())) {
balance = balance - 150;
}
if (result == result.append("Water: ").append(chkWater.isChecked())) {
balance = balance - 150;
}
if (result == result.append("Transfers: ").append(chkTransfer.isChecked())) {
balance = balance - 500;
}
if (result == result.append("Withdrawal: ").append(chkWithdrawal.isChecked())) {
balance = balance - 200;
}
if (result == result.append("Pay Dstv: ").append(chkPayDstv.isChecked())) {
balance = balance - 200;
} else {
Toast.makeText(SavingsAccountTransactions.this, "Nothing been Selected ", Toast.LENGTH_LONG).show();
}
savingsBalance.setText("Your Balance is: " + balance);
Toast.makeText(SavingsAccountTransactions.this, result.toString(), Toast.LENGTH_SHORT).show();
}
});
}
答案 0 :(得分:1)
显然,如果条件总是返回true。
(例如:result == result.append("Airtime: ").append(chkAirtime.isChecked())
)
为什么:您在if条件中使用相同的对象。
通过查看您的代码,我认为您需要像这样检查
if (chkAirtime.isChecked()) { //checking CheckBox is checked or not.
balance = balance - 50;
result.append("Airtime: "+balance+" ");//appending data to result
}
如果条件适用于其他所有人。
重要:如果要比较两个字符串,请始终使用equals
。例如s1.equals(s2);
visit this : SO - Java String.equals versus ==