为什么这段代码不能终止我的程序? Java的

时间:2013-10-11 07:24:42

标签: java exit clear terminate

我正在尝试在java中实现System.exit(0);以在控制台中键入“exit”一词时终止我的程序。我写了以下方法:

    public static void exit(){

    Scanner input = new Scanner(System.in);
    Str1 = input.next(String);

    if (str1 = "exit"){

        System.exit(0);
    }

    else if (str1 = "clear"){

        System.out.println("0.0");
    }       
}

它似乎没有用。有没有人有任何建议?

由于 P.S“清除”只是在控制台输入“清除”时才返回0.0,如果你还不知道的话。

5 个答案:

答案 0 :(得分:4)

equals()的字符串与==进行比较。

原因是==只是比较对象引用/原语,其中String的.equals()方法检查相等。

if (str1.equals("exit")){

}

以及

else if (str1.equals("clear")){

}

可能有用:What are the benefits of "String".equals(otherString)

答案 1 :(得分:1)

if(str.equals("exit")) 

if(str.equalsIgnoreCase("exit")) 

if(str == "exit") 

而不是

if (str1 = "exit"){

答案 2 :(得分:1)

使用if (str1 = "exit")您使用分配而不是比较。 您可以与equals()方法进行比较。

答案 3 :(得分:0)

使用String.equals(String other)函数比较字符串,而不是==运算符。

该函数检查字符串的实际内容,==运算符检查对象的引用是否相等。请注意,字符串常量通常是“实例化”,这样两个具有相同值的常量实际上可以与==进行比较,但最好不要依赖它。

所以使用:

if ("exit".equals(str1)){

}

答案 4 :(得分:0)

除了equals()input.next(String pattern);要求模式不是String数据类型

将您的代码更改为:

public static void exit(){   

Scanner input = new Scanner(System.in);
str1 = input.next(); //assumed str1 is global variable

if (str1.equals("exit")){

    System.exit(0);
}

else if (str1.equals("clear")){

    System.out.println("0.0");
}

}

备注:http://www.tutorialspoint.com/java/util/scanner_next_string.htm