Java字符串条件中断不起作用

时间:2014-10-01 18:42:05

标签: java conditional-statements break

我写了一个简单的程序,提示用户输入一个句子,单词或数字,然后打印输入是艺术。我把程序放在一个无限循环上,以便重复提示。但是,现在我试图通过说if (input == "quit") break;添加一种退出方式,但它似乎没有起作用。它只是继续无限循环。这是完整的代码:

import java.util.Scanner;
public class Art
{
     public static void main(String [] args)
     {
        Scanner input = new Scanner(System.in);
        String a;
       for ( ; ; ) 
            {
            System.out.println("Please enter something: ");
            a = input.nextLine();
            if (a == "quit") break;
            System.out.print("\n");
            System.out.println(a + " is art.");
            System.out.print("\n");


            }
    }
}

任何帮助都很可爱,谢谢!

2 个答案:

答案 0 :(得分:2)

使用input.equals("quit")

==用于检查两个对象是否完全相同 - 内存中的相同内容 - 键入的单词和常量字符串"quit" 。创建了"quit"的两个实例:一个由用户键入,一个常量在程序中。

equals()方法用于比较两个对象是否相等,无论以何种方式为它们定义相等性。对于字符串,这意味着具有相同的文本。

==equals()之间的差异在Java中是非常基础的,所以你应该重温它。这是a good SO post on the topic。一旦开始创建自己的类,您可能会为它们实现equals()方法。因此,请务必查看equals() / hashCode() contract

答案 1 :(得分:1)

看起来a == "quit"就是问题所在。使用equals()

比较字符串
if("quit".equals(a)) {

}