程序在If语句后执行Else语句

时间:2013-05-03 16:43:39

标签: java if-statement java.util.scanner

import java.util.Scanner;
import static java.lang.System.out;
import static java.lang.System.in;
public class AI_Core {

     /**
 * @param args
 */
public static void main(String[] args) {
    String Input;
    String HOY_Input;
    Scanner Command = new Scanner(in);
    Scanner HOY_Response = new Scanner(in);
    out.println("Hello Sir, how can I help you?");
    while(true){
        Input = Command.nextLine();
        if((Input.equals("Hello")) || (Input.equals("Hey M"))) {
            out.println("Hello Sir, how are you?");
            HOY_Input = HOY_Response.nextLine();
            if((HOY_Input.equals("Great!")) || (HOY_Input.equals("Alright"))) {
                out.println("Glad to hear it sir.");
            }
            if((HOY_Input.equals("Not so good")) || (HOY_Input.equals("Been better"))) {
                out.println("I'm sorry to hear that sir, just let me know if I can help in any way.");
            }
        }
        if(Input.equals("exit")) {
            out.println("Goodbye Sir.");
            //out.wait();
            System.exit(0);
        }
        else {
            out.println("I'm sorry sir, but I don't quite understand the term: ");
            out.print(Input);
            out.print(", could you please check your spelling and try again?");
        }
    }
}

}

Else语句在If语句之后执行,如控制台中所示:

  

您好先生,我该如何帮助您?   嘿M
  你好先生,你好吗?   太好了!
  很高兴听到先生。
  我很抱歉先生,但我不太明白这个词:嘿M,请你检查拼写然后再试一次?

2 个答案:

答案 0 :(得分:3)

当您说if(Input.equals("exit"))时,您已经开始了另一个if。 <{1}}与“exit”不匹配,因此执行else。

看起来您只想要执行3个案例中的一个。在这种情况下,您需要Input将其连接到第一个else if

if

这样,只有前两个else if(Input.equals("exit")) { 语句都产生I'm sorry sir, but I don't quite understand the term:时才会打印if

答案 1 :(得分:0)

问题是你的else语句只引用了它之前的if语句。第一个if语句就是它自己的全部。只要输入不是“退出”,else部分就会执行。

您需要else if来连接所有三个语句,以便只执行一个语句:

else if(Input.equals("exit")) {

此页面可能有所帮助:

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html