以下代码创建一个字符串数组' one'如[c,a,t,a,n,d,d,o,g]。现在我想创建一个int数组' two'每个地方的每个地方都有一个'是3,其他所有地方都由5成形填补
int two= {5, 3, 5, 3, 5, 5, 5, 5, 5}
但是代码给出了每个元素等于5,因此它打印为
5 5 5 5 5 5 5 5 5 :
我使用的代码从这里开始:
import com.google.common.collect.ObjectArrays;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.lang3.ArrayUtils;
public class StringInt {
public static void main(String[] args) {
String str= "cat and dog";
String[] word = str.split("\\s");
String[] one = new String[0];
for(int i=0; i<word.length; i++){
one = ArrayUtils.addAll(one, word[i].split("(?!^)"));
}
System.out.println("One : " + Arrays.toString(one));
int[] b = new int[one.length];
for(int j=0; j<one.length; j++){
if(one[j]=="a"){
b[j]=3;
} else {
b[j]=5;
}
System.out.print(b[j]+" ");
}
}
}
对编程和java不熟悉我需要帮助来纠正这段代码以获得所需的输出:
5 3 5 3 5 5 5 5 5
答案 0 :(得分:6)
您正在使用==
而不是.equals()
来比较字符串。
使用one[j].equals("a")
。
答案 1 :(得分:2)
您在比较基元时使用==
,例如int
,double
,char
等。
比较对象时,必须使用equals()方法,该方法是每个对象从Object类继承的方法。
这是来自javadocs:
boolean equals(Object obj)
Indicates whether some other object is "equal to" this one.
由于String是一个对象,而不是一个原语,因此必须使用equals方法检查两个String对象之间的相等性。