java if语句没有打破"for循环"

jbc*_*oko 3 java indexing for-loop if-statement 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);   
Run Code Online (Sandbox Code Playgroud)

正如您在循环中看到的那样,我希望在列表元素"语法"为"+"时打破"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
Run Code Online (Sandbox Code Playgroud)

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

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

Mys*_*ial 10

你正试图比较字符串==.这不起作用,你需要使用.equals():

更改:

syntax[index] == "+"
Run Code Online (Sandbox Code Playgroud)

syntax[index].equals("+")
Run Code Online (Sandbox Code Playgroud)

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