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