【问题标题】:How to Compare strings in java [duplicate]如何在java中比较字符串[重复]
【发布时间】:2013-11-07 02:55:41
【问题描述】:

我正在制作一个程序,当用户输入一种心情时,它会根据它输出一个报价。我需要告诉程序
if the user is happy, then output this text 问题是,我不知道如何让程序识别输入并基于它输出文本...这是我到目前为止的代码。

import java.util.Scanner;
public class modd {
    public static void main(String arrgs[]) {
        System.out.println("Enter your mood:");
        Scanner sc = new Scanner(System.in);
        String mood = sc.nextLine();

        if (sc = happy) {
            System.out.println("test");

            if (sc = sad) {
                System.out.println("I am sad");
            }
        }
    }
} 

【问题讨论】:

  • 我先看看Strings 上的Java Tutorial
  • 了解如何比较字符串。 switch 也可能有所帮助。您的输入也是mood(不是sc)。

标签: java string compare


【解决方案1】:

不能像这样比较字符串

if (sc = happy)  // also, you never declare a happy variable. So use the 
                 // stirng literal like I did below
// also can't compare to Scanner instance
// instead compare to mood

使用等于

if ("happy".equals(mood)) {  // Caught commenter, can't use sc to compare, use mood
    // do something
}

此外,如果将来您需要使用 = 操作进行比较(除了字符串之外的任何内容),您可以使用双 ==

【讨论】:

  • scScanner 的一个实例。
  • 谢谢,没听懂。
【解决方案2】:

首先,您似乎处理了错误的变量sc。我想你的意思是比较mood

处理字符串时,始终使用.equals(),而不是==== 比较参考,这通常是不可靠的,而.equals() 比较实际值。

将字符串全部转换为大写或全部小写也是一种很好的做法。在此示例中,我将使用小写字母 .toLowerCase().equalsIgnoreCase() 也是解决任何案例问题的另一种快速方法。

我还推荐if-else-statement,而不是第二个if-statement。您的代码如下所示:

mood=mood.toLowerCase()

if (mood.equals("happy")) {
    System.out.println("test");
}

else if (mood.equals("sad")) {
    System.out.println("I am sad");

}

这些都是非常基本的 Java 概念,因此我建议您更彻底地阅读其中的一些概念。您可以在此处查看一些文档和/或其他问题:

【讨论】:

  • 感谢您的回答!对此,我真的非常感激。如果你不介意再告诉我一件事;如何将输出设置为其他任何内容。假设用户输入了程序无法识别的文本,我将如何输出“Mood not Understood”之类的内容?
  • 您可以使用最终的else 声明来打印您的消息。如果mood 在没有匹配任何条件的情况下通过了每个条件,那么您的程序将在最后打印消息。也很高兴我能提供帮助。
  • @Hasteify a Switch 如果是这样的话会更好
  • @AsshO.Le 我同意,但由于他已经在实施 if-else 阶梯,所以我坚持主题。他不想完全重写,他只想解决他的问题。
  • @Wold 是的,你是对的 :) 我只是添加了一些对他未来有帮助的东西 :)
【解决方案3】:

总是使用 .equals(..) 方法来比较字符串值..

if (mood.equals("happy")) 
  System.out.println("test");

if (mood.equals("sad")) 
    System.out.println("I am sad");

【讨论】:

    【解决方案4】:

    应该是这样的

        if ("happy".equals(mood)
    {
        System.out.println("IM HAPPYYYYYYY!!!!");
    }
    

    【讨论】:

      【解决方案5】:

      我认为你可以如何解决这个问题是通过指定一组预定义的输入参数供用户选择,然后根据那里的选择做出相应的响应,例如:

       System.out.println ("Enter you mood: [1 = happy,2 = sad,3 = confused]");
       int input = new Scanner(System.in).nextInt ();
      
       switch (input)
       {
         case 1:  System.out.println ("I am happy");break;
         case 2:  System.out.println ("I am sad");break;
         default: System.out.println ("I don't recognize your mood");
       }
      

      【讨论】:

        【解决方案6】:

        您需要更正以下几点:

        1. 单个=表示赋值,而不是比较。

        2. 我假设您想检查输入的字符串是否等于“happy”和“sad”。使用 equals 方法而不是 "==" 来检查字符串值。

        3. 为什么你把 if (sc = sad) 放在 if (sc = happy) 里面。内部检查永远不会执行。

        4. 您需要检查从控制台输入的值,而不是使用 Scanner sc 本身。

        所以我认为您需要将代码更改如下:

        字符串心情 = sc.nextLine();

            if (mood.equals("happy")) {
                System.out.println("test");
            }
        
            if (mood.equals("sad")) {
                System.out.println("I am sad");
            } 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-07-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-19
          相关资源
          最近更新 更多