两个if if vs if和else if

时间:2017-03-02 08:55:13

标签: if-statement

if(button.getText().equals("Hello")){
     button.setText("Hello World");
}
else if(button.getText().equals("Hello World")){
     button.setText("Hello");
}

上面的代码有效,而第二个代码没有:

if(button.getText().equals("Hello")){
     button.setText("Hello World");
}
if(button.getText().equals("Hello World")){
     button.setText("Hello");
}

这个直接进入第二个if块

我不明白它与第一个有什么不同,它应该先到第一个if块,但它只是跳过它

我希望你能解释一下这个

这是完整的代码:

package javaapplication4;
import java.util.*;
import javax.swing.*;
import java.awt.event.*;

public class JavaApplication4 implements ActionListener{
    JFrame frame;
    JButton button;
    public static void main(String[] args){
        JavaApplication4 gui = new JavaApplication4();
        gui.go();
    }

    public void go() {
        frame = new JFrame();
        button = new JButton("Hello");

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(200,300);
        frame.setVisible(true);
        frame.getContentPane().add(button);

        button.addActionListener(this);
    }

    @Override
    public void actionPerformed(ActionEvent ev){
        if(button.getText().equals("Hello")){
            button.setText("Hello World");
        }
        if(button.getText().equals("Hello World")){
            button.setText("Hello");
        }
    }
}

3 个答案:

答案 0 :(得分:3)

解释。第一个:

if(button.getText().equals("Hello")){ //let's say it's true, so the text is "Hello"
     button.setText("Hello World"); //now you change the text to "Hello World"
}
else if(button.getText().equals("Hello World")){ //this line is not executed because of "else" keyword, it means that it will be checked ONLY if the first statement was false
     button.setText("Hello"); //this line is not executed
}

第二个:

if(button.getText().equals("Hello")){ //let's say it's true, so the text is "Hello"
     button.setText("Hello World"); //now the text is "Hello World"
}
if(button.getText().equals("Hello World")){ //it's true because you changed the text
     button.setText("Hello"); //so this line changes text again, back to "Hello"
}

答案 1 :(得分:1)

第一个它将在第一个之后停止因为text = Hello。它不会进入else if语句。

但是对于第二个,它也将检查第二个if。 首先,它检查text = Hello - >这是真的,所以它会在Hello世界中发生变化。 之后,第二个if将检查text = Hello world,它是否为。

答案 2 :(得分:0)

你在第二个问题中的问题是两个块都被执行了,而else语句阻止了这个。

首先,文本等于" Hello"。在第一个if语句之后,它被更改为" Hello World"。

然后转到第二个语句,现在文本是" Hello World",它也执行此语句,将文本更改回" Hello"。

在第一个示例中没有发生这种情况,因为else if表示只检查前面的if语句是否给出错误结果时才会检查条件。