否则没有错误?

时间:2014-06-13 16:52:41

标签: java swing syntax-error jcheckbox

我想知道为什么这段代码会给我这个问题,请记住它已经在同一个项目的早期表单中工作但它拒绝在这里工作。

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和东西的所有内容,但到目前为止,他并没有多大的帮助。

3 个答案:

答案 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);