我想知道为什么这段代码会给我这个问题,请记住它已经在同一个项目的早期表单中工作但它拒绝在这里工作。
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
if (jCheckBox1.isSelected()== true)
jCheckBox1.equals(56);
if (jCheckBox2.isSelected()== true)
jCheckBox2.equals(50);
if (jCheckBox3.isSelected()== true)
jCheckBox3.equals(56);
if (jCheckBox4.isSelected()== true)
jCheckBox4.equals(56);
if (jCheckBox5.isSelected()== true)
jCheckBox5.equals(56);
if (jCheckBox6.isSelected()== true)
jCheckBox6.equals(56);
new Form6().setVisible(true);
else
if (jCheckBox1.isSelected()== false)
jCheckBox1.equals(0);
if (jCheckBox2.isSelected()== false)
jCheckBox2.equals(0);
if (jCheckBox3.isSelected()== false)
jCheckBox3.equals(0);
if (jCheckBox4.isSelected()== false)
jCheckBox4.equals(0);
if (jCheckBox5.isSelected()== false)
jCheckBox5.equals(0);
if (jCheckBox6.isSelected()== false)
jCheckBox6.equals(0);
JOptionPane.showMessageDialog(this, "Please Choose An Option and Try Again");
如果我有任何方法可以使用不同的方法计算jCheckBox
值,那么我非常渴望学习。我的教授说,他几乎了解有关java netbeans和东西的所有内容,但到目前为止,他并没有多大的帮助。
答案 0 :(得分:10)
使用curly brackets (braces)并缩进避免这种微不足道的错误。
代码
if (jCheckBox6.isSelected()== true)
jCheckBox6.equals(56);
new Form6().setVisible(true);
else
if (jCheckBox1.isSelected()== false)
jCheckBox1.equals(0);
相当于
if (jCheckBox6.isSelected()== true) {
jCheckBox6.equals(56);
}
new Form6().setVisible(true); // <-- WHAT???
else if (jCheckBox1.isSelected()== false) { // <-- WHERE IS MY IF?
jCheckBox1.equals(0);
}
虽然上面解释了语法错误,但结果程序仍然是无意义的 - 这是由于一个荒谬的&#34;否则&#34;配对,因为所有chekbox.equals(string)
陈述都不做(或意味着)任何事情。然而,没有问题描述的进一步推测似乎并不谨慎。
答案 1 :(得分:1)
让我们通过正确分离和使用缩进来仔细查看代码的条件结构:
我想添加一些空白区域以清楚地了解正在发生的事情。
private void main(void){
//Indentation shows how program blocks are related to one another
if (this.condition(parameters) == true)
// Indentation here shows the following statement is clearly associated with the above condition.
this.DoSomething(parameters);
现在,考虑到这一点,让我们检查您的代码:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
if (jCheckBox1.isSelected()== true)
jCheckBox1.equals(56);
if (jCheckBox2.isSelected()== true)
jCheckBox2.equals(50);
if (jCheckBox3.isSelected()== true)
jCheckBox3.equals(56);
if (jCheckBox4.isSelected()== true)
jCheckBox4.equals(56);
if (jCheckBox5.isSelected()== true)
jCheckBox5.equals(56);
if (jCheckBox6.isSelected()== true)
jCheckBox6.equals(56);
new Form6().setVisible(true); // This statement will always run because it's not associated with a condition.
else // Oops! Here is an else that is not associated with an if statement! This probably doesn't compile
if (jCheckBox1.isSelected()== false) // This if is conditional on the else above.
jCheckBox1.equals(0);
if (jCheckBox2.isSelected()== false)
jCheckBox2.equals(0);
if (jCheckBox3.isSelected()== false)
jCheckBox3.equals(0);
if (jCheckBox4.isSelected()== false)
jCheckBox4.equals(0);
if (jCheckBox5.isSelected()== false)
jCheckBox5.equals(0);
if (jCheckBox6.isSelected()== false)
jCheckBox6.equals(0);
JOptionPane.showMessageDialog(this, "Please Choose An Option and Try Again");
} // I assume you mean to close the method
以下是我看到的内容 - 此代码不使用{}
块来将代码与条件相关联。这很好,但是如果你不使用{}
块,只要在if语句之后只运行下一行。
示例:
if (someCondition)
this.runSingleLine();
if (someCondition)
this.runSingleLine();
else
this.runSomeOtherSingleLine();
if (someCondition)
{
this.doSomething();
this.doSomethingElse();
...
this.finishProcedure();
}
答案 2 :(得分:0)
我不知道这在以前的项目中是如何起作用的。
这个else语句本身就是(没有相应的if语句):
else
if (jCheckBox1.isSelected()== false)
这有什么意义呢?您没有将此新对象分配给引用:
new Form6().setVisible(true);