【问题标题】:java input string and stop when 'stop' is enteredjava输入字符串并在输入'stop'时停止
【发布时间】:2010-11-26 09:37:33
【问题描述】:

这是我的代码,我有一个 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");
    }
}

【问题讨论】:

    标签: java loops


    【解决方案1】:

    尝试将text != "stop" 替换为!text.equals("stop")

    != 是引用相等测试,.equals() 是逻辑相等测试。两个字符串可以是不同的对象,但在逻辑上仍然相等(在这种情况下内容相同)。

    【讨论】:

    • 更具体; != 运算符在引用类型的情况下比较引用,而对于原语,它比较值(即执行逻辑比较)
    【解决方案2】:

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

    while (!text.equals("stop"));
    

    请注意,对象上的 ==!= 比较 references - 即,如果您在非原始变量上使用这些运算符,则您正在检查变量是否引用同一个对象,如果这些对象的内容相同,则不会。

    【讨论】:

      【解决方案3】:

      替换

      while (text != "stop")
      

      while (!text.equals("stop"))
      

      【讨论】:

        【解决方案4】:

        您无法使用== 比较字符串。使用equalswhile(!"stop".equals(text))

        由于它来自用户输入,你可能想忽略大小写比较,你可以使用equalsIgnoreCase

        【讨论】:

          【解决方案5】:

          所有的海报都是正确的:你应该使用 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() 不是必需的。
          猜你喜欢
          • 2015-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-24
          • 2020-08-04
          • 1970-01-01
          • 2019-08-04
          相关资源
          最近更新 更多