Java 如果两个复选框都选中了怎么办?
在这个程序中,当两个复选框都被选中时,我不能满足第三个else if条件。它仍然显示价格的40%,而应该显示50%Java 如果两个复选框都选中了怎么办?,java,swing,if-statement,jcheckbox,Java,Swing,If Statement,Jcheckbox,在这个程序中,当两个复选框都被选中时,我不能满足第三个else if条件。它仍然显示价格的40%,而应该显示50% int p = Integer.parseInt(jTextField1.getText()); //Product Price int dis = 40*p/100; // 40% discount int adis = 10*p/100; // 10% discount int tdis = 50*p/100; // 50% discount int f
int p = Integer.parseInt(jTextField1.getText()); //Product Price
int dis = 40*p/100; // 40% discount
int adis = 10*p/100; // 10% discount
int tdis = 50*p/100; // 50% discount
int fpd = p-dis; // final price (40% discount)
int fpad = p-adis; // final price (10% discount)
int fptdis = p-tdis; // final price (50% discount)
if (jCheckBox1.isSelected()==true)
jLabel3.setText("dis is 40% "+"dis amt is "+dis+"final price is "+fpd);
else if (jCheckBox2.isSelected()==true)
jLabel3.setText("dis is 10% "+"dis amt is "+adis+"final price is "+fpad);
// This condition is not working!!
else if (jCheckBox1.isSelected()==true && jCheckBox2.isSelected()==true)
jLabel3.setText("dis is 50% "+"dis amt is "+tdis+"final price is "+fptdis);
else jLabel3.setText("no discount"+"final price is "+p);
你应该重新排列你的if-else。首先检查两者,然后检查个人。因为如果检查其中任何一个,检查将在前两个条件本身停止
if (jCheckBox1.isSelected() && jCheckBox2.isSelected())
jLabel3.setText("dis is 50% "+"dis amt is "+tdis+"final price is "+fptdis);
else if (jCheckBox1.isSelected())
jLabel3.setText("dis is 40% "+"dis amt is "+dis+"final price is "+fpd);
else if (jCheckBox2.isSelected())
jLabel3.setText("dis is 10% "+"dis amt is "+adis+"final price is "+fpad);
else jLabel3.setText("no discount"+"final price is "+p);
此外,我将
jCheckBox1.isSelected()==true
部分替换为jCheckBox1.isSelected()
,因为它已经返回了一个布尔值,您不需要再与布尔值进行比较。您应该重新排序if-else的值。首先检查两者,然后检查个人。因为如果检查其中任何一个,检查将在前两个条件本身停止
if (jCheckBox1.isSelected() && jCheckBox2.isSelected())
jLabel3.setText("dis is 50% "+"dis amt is "+tdis+"final price is "+fptdis);
else if (jCheckBox1.isSelected())
jLabel3.setText("dis is 40% "+"dis amt is "+dis+"final price is "+fpd);
else if (jCheckBox2.isSelected())
jLabel3.setText("dis is 10% "+"dis amt is "+adis+"final price is "+fpad);
else jLabel3.setText("no discount"+"final price is "+p);
boolean ch1 = jCheckBox1.isSelected();
boolean ch2 = jCheckBox1.isSelected();
if (ch1 && !ch2) {
// first case
} else if (!ch1 && ch2) {
// second case
} else if (ch1 && ch2) {
// third case
}
此外,我将部分jCheckBox1.isSelected()==true
替换为jCheckBox1.isSelected()
,因为它已经返回一个布尔值,您无需再次与布尔值进行比较。此代码包含一个简单的逻辑错误:
boolean ch1 = jCheckBox1.isSelected();
boolean ch2 = jCheckBox1.isSelected();
if (ch1 && !ch2) {
// first case
} else if (!ch1 && ch2) {
// second case
} else if (ch1 && ch2) {
// third case
}
if (jCheckBox1.isSelected()==true)
else if (jCheckBox2.isSelected()==true)
// This condition is not working!!
else if (jCheckBox1.isSelected()==true && jCheckBox2.isSelected()==true)
如果最后一个条件匹配,则前两个条件已经满足,程序将在第一个条件下执行代码。第一个条件必须是检查是否选中了两个复选框。否则代码将永远不会达到该条件,除非它不满足
只需删除这个检查==true
,代码就可以简化很多,这也是一个布尔值。只需将if(somebooleanpression==true)
替换为if(somebooleanpression)
此代码包含一个简单的逻辑故障:
if (jCheckBox1.isSelected()==true)
else if (jCheckBox2.isSelected()==true)
// This condition is not working!!
else if (jCheckBox1.isSelected()==true && jCheckBox2.isSelected()==true)
如果最后一个条件匹配,则前两个条件已经满足,程序将在第一个条件下执行代码。第一个条件必须是检查是否选中了两个复选框。否则代码将永远不会达到该条件,除非它不满足
只需删除这个检查==true
,代码就可以简化很多,这也是一个布尔值。简单地用if(somebooleanpression==true)
替换if(somebooleanpression)
在if
条件下说==true
是不礼貌的。我还是个初学者……现在你学到了一些东西。你的意思是什么?我只是想说声谢谢:)在if
的情况下说==true
是不礼貌的。而且我还是个初学者……现在你学到了一些东西。你的意思是什么?我只是想说谢谢:)这个看起来简单多了,我会试试看,顺便说一句谢谢。这个看起来简单多了,我会试试看,顺便说一句谢谢。@Yashw乐意帮忙:)@Yashw乐意帮忙:)