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.这就是你想要的.