Java 如果两个复选框都选中了怎么办?

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

在这个程序中,当两个复选框都被选中时,我不能满足第三个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 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乐意帮忙:)