java if语句没有破坏 "for loop"

标签 java if-statement for-loop indexing break

<分区>

我是 Java 新手,但我认为这几周我自学得很好。但现在我陷入了这个循环。

这是我类的一个方法。为了帮助我进行调试,我在这个方法中添加了“myString”字符串和“语法”列表来演示正在发生的事情并保持简单,至少现在是这样。

public void getIndex(){
    String myString = "2 2 + 3 5";
    String[] syntax = myString.split(" ");

    for (int index = 0; index < syntax.length; index++){
        System.out.println("current index is: " + index);
        System.out.println("It has: " + syntax[index]);
        // these print statements are made to help me debug
        if (syntax[index] == "+"){
            indexNeeded = index;
            break;
        }
    }
    System.out.println("Index Needed: " + indexNeeded);   

正如您在循环内部看到的那样,我想在列表元素“语法”为“+”时中断“for 循环”。 (我在这里显示“+”,但它可以是实际程序中的任何内容。)

这是运行此方法时的输出:

current index is: 0
It has: 2
current index is: 1
It has: 2
current index is: 2
It has: +
current index is: 3
It has: 3
current index is: 4
It has: 5
Index Needed: 0

循环应该在找到“+”时停止,但似乎“if 语句”根本不起作用,因此“indexNeeded”没有改变。

这是一个简单的方法,但我在这里做错了什么?

最佳答案

您正在尝试将字符串与 == 进行比较。这不起作用,您需要使用 .equals():

改变:

syntax[index] == "+"

syntax[index].equals("+")

== 仅当两个对象引用同一实例时才返回 true。 equals() 将在字符串内容相同时返回 true。这就是您想要的。

关于java if语句没有破坏 "for loop",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8732598/

相关文章:

java - Struts2: session 问题(反向代理后)

java - 简单 HelloWorld 上的 ClassNotFoundException

java - If 语句在 NetBeans 中无法正常运行

c# - if 语句出错 - 无法将类型隐式转换为 'bool'

python - pandas 数据帧 for 循环中的 KeyError

c - c中for循环的一个例子

java - 追加两个单链表

java - JSF 环境设置

java - 如何重构这段代码?

java - 为什么 for 循环的条件部分中的 "False"显示错误,但 "True"工作正常?