Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java输入字符串并在';停止';输入_Java_Loops - Fatal编程技术网

java输入字符串并在';停止';输入

java输入字符串并在';停止';输入,java,loops,Java,Loops,这是我的代码,我有一个do-while循环,除非输入的字符串“text”是“stop”,否则循环应该继续。然而,当我编译代码时,它并没有停止,而是卡在一个无限循环中。请帮忙。谢谢 import java.io.*; public class input { public static void main(String[] argv) throws IOException { BufferedReader br = new BufferedReader(new I

这是我的代码,我有一个do-while循环,除非输入的字符串“text”是“stop”,否则循环应该继续。然而,当我编译代码时,它并没有停止,而是卡在一个无限循环中。请帮忙。谢谢

import java.io.*;

public class input
{
    public static void main(String[] argv) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
        String text = "";  
        do
        {
            System.out.println("Please enter a string: ");
            text = br.readLine(); 
            System.out.println(text);
        }
        while (text != "stop");
    }
}

尝试替换
文本!=通过
来“停止”
!text.equals(“停止”)


=
是一个引用相等测试,
.equals()
是一个逻辑相等测试。两个字符串可以是不同的对象,并且在逻辑上仍然相等(本例中的内容相同)。

您正在将字符串与
进行比较=。这在Java中不起作用。您应该使用
equals()
来比较字符串:

while (!text.equals("stop"));
请注意
==
=比较引用-即,如果在非基本变量上使用这些运算符,则检查变量是否引用同一对象,而不是这些对象的内容是否相同。

替换

while (text != "stop")


不能使用
==
比较字符串。使用
equals
while(!“stop”.equals(text))


另外,由于它来自用户输入,因此您可能希望忽略大小写进行比较,您可以使用
equalsIgnoreCase
所有海报都是正确的:您应该使用String.equals()

您还应该完全理解Java中的字符串处理。你到处都需要它

甚至应该使用String.equals,Java也提供了一些“魔力”,甚至可以与您的比较一起使用。继续学习

public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String text = "";
        "stop".intern();
        do {
            System.out.println("Please enter a string: ");
            text = br.readLine().intern();
            System.out.println(text);
        } while (text != "stop");
    }

具体来说,<代码>=运算符在引用类型的情况下比较引用,而对于原语,它比较值(即执行逻辑比较)
“stop”。不需要intern()
public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String text = "";
        "stop".intern();
        do {
            System.out.println("Please enter a string: ");
            text = br.readLine().intern();
            System.out.println(text);
        } while (text != "stop");
    }