为什么不是“艾莉”? ==“Ellie”,当从用户那里读取其中之一时?

发布于 2024-11-28 17:52:22 字数 678 浏览 0 评论 0原文

以下问题来自我几周前进行的测验,结果不正确,但没有提供答案:

考虑以下代码,其中不包含编译错误:

字符串秘密=“艾莉”;
扫描仪 kb = new Scanner(System.in);
System.out.println("猜猜我想到的是哪个名字:");
字符串猜测 = kb.next();

if(猜测==秘密)
{
    System.out.println("哇!你真聪明!");
}
别的
{
    System.out.println("错误!");
    System.out.println("你猜到了:" + 猜想);
    System.out.println("正确答案是:" + Secret);
}

假设用户在提示符下输入“Ellie”。 会产生什么输出,为什么是这个输出而不是另一个输出?

这是我的错误答案:

输出将是 else 语句“错误!”因为字母“E”的大写。解决这个问题的方法是 将字符串秘密更改为“ellie”以及用户的猜测,或者可以在ignoreCase关键字中写入 字符串秘密。

程序实际上输出“错误”,我测试了一下。

除了简单地知道答案之外,有人真的可以向我解释这一点,以便我可以更好地理解这个概念吗?

The following question is from a quiz I took a few weeks ago and got incorrect, but the answer wasn't provided:

Consider the following code, which contains no compile errors:

String secret = "Ellie";
Scanner kb = new Scanner(System.in);
System.out.println("Guess which name I'm thinking of:");
String guess = kb.next();

if (guess == secret)
{
    System.out.println("Wow! You're smart!");
}
else
{
    System.out.println("Wrong!");
    System.out.println("You guessed: " + guess);
    System.out.println("The correct answer was: " + secret);
}

Suppose the user enters "Ellie" at the prompt.
What output would result, and why that output and not the other output?

Here was my incorrect answer:

The output would be the else statement "WRONG!" because of the capitalization of the letter 'E'. A solution to this would be
to either change the String secret to "ellie" as well as the user's guess, or one can write in the ignoreCase keyword to
String secret.

The program actually outputs "Wrong", I tested it.

Aside from simply knowing the answer, could someone really explain this to me so I can understand the concept better?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寄居人 2024-12-05 17:52:22

== 进行引用比较,因此即使两个字符串引用相等,它也总是会显示“错误!”。为了使其正确匹配,必须使用secret.equals(guess)

The == does a reference comparison, and so it'll always say 'Wrong!', even if the two string references are equal. In order for it to match correctly, it would have to use secret.equals( guess ).

海拔太高太耀眼 2024-12-05 17:52:22

在 java 中:

  • == 运算符测试两个对象是否是同一个实例,
  • String 的 .equals() 方法比较对象是否“具有相同的值”

由于用户输入了值,因此它是String 的 new 实例,因此 secret == input 永远不会成立。

比较字符串时,您应该始终使用 str1.equals(str2)

In java:

  • the == operator tests if the two objects are the same exact instance
  • the .equals() method of String compares if the objects "have the same value"

Since the user input the value, it's a new instance of String, so it will never be true that secret == input.

You should always use str1.equals(str2) when comparing Strings.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文