如何在 java 中比较字符串



我正在制作一个程序,当用户输入心情时,它会根据它输出报价。我需要告诉程序
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");
            }
        }
    }
} 

无法像这样比较字符串

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
}

此外,如果将来需要使用 = 操作进行比较(对于字符串以外的任何内容),您将使用双精度 ==

首先,看起来您正在处理错误的变量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概念,所以我建议更彻底地阅读其中的一些概念。您可以在此处查看一些文档和/或其他问题:

  • if-else 语句
  • 字符串
  • Java String.equals vs. ==

始终使用 .equals(..) 方法来比较字符串值。

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

应该是这样的

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

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

 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");
 }

您需要更正以下事项:

  1. 单个 = 表示分配,而不是比较。

  2. 我假设您想检查输入的字符串是否等于"快乐"和"悲伤"。使用等于方法而不是"=="来检查字符串值。

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

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

所以我认为您需要像下面这样更改代码:

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

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

相关内容

  • 没有找到相关文章

最新更新