java - “If”语句未通过检查涉及字符串数组

标签 java arrays eclipse if-statement java.util.scanner

<分区>

我正在尝试用 Java 创建一个程序,它允许用户从包含在 String 数组中的咖啡列表中挑选并继续,但它没有通过检查并打印出 else 语句。

相关代码如下:

Scanner scan = new Scanner(System.in);
String[] flavors = {"Black", "French Vanilla", "Hazelnut", "Mango", "Cherokee", "anarcho-syndicalism", "Otis" };

...

System.out.println("Today we have " + Arrays.toString(flavors));
System.out.println("Please enter the name of the coffee you would like exactly as shown above: ");
String coffee = scan.next();

...

for (int i = 0; i < flavors.length; i++) {
    if (coffee == flavors[i]) {
        String selection = flavors[i];

虽然此处未显示,但我相信稍后在程序中的所有内容都已正确格式化。有什么想法吗?

最佳答案

一般来说,在java中比较对象是否相等时,使用.equals()。使用 == 比较原语。在 java 中,String 是对象。

改变:

if (coffee == flavors[i]) {

到:

if (coffee.equals(flavors[i])) {

当用==比较对象时,只有当它们实际上是同一个实例时它们才相等。

关于java - “If”语句未通过检查涉及字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27455672/

相关文章:

java - Apache Lucene中 "order of applying filters"背后的逻辑是什么

java - 数组中同一索引有两个值

java - Java错误: reached end of file while parsing (Not typical)

java - 运行在 Eclipse 中运行的 JUnit 测试时,Ant 会抛出 ClassNotFoundException

c# - 为了 "purely documenting"目的,我应该在我的方法中捕获异常吗?

java - 字符串的下一个字典顺序更大的排列

java - 为什么 Tomcat 服务器不更改复制的 JSF 项目的名称

Java:数组星号打印值

android - adt插件升级到23.0.6.1720515和sdk tools升级到24.1.2后出现的问题

java - 资源警告java