使int数组与java字符串数组并行

时间:2014-06-11 12:49:03

标签: java arrays

以下代码创建一个字符串数组' 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

2 个答案:

答案 0 :(得分:6)

您正在使用==而不是.equals()来比较字符串。

使用one[j].equals("a")

答案 1 :(得分:2)

您在比较基元时使用==,例如intdoublechar等。

比较对象时,必须使用equals()方法,该方法是每个对象从Object类继承的方法。

这是来自javadocs:

boolean equals(Object obj)
Indicates whether some other object is "equal to" this one.

由于String是一个对象,而不是一个原语,因此必须使用equals方法检查两个String对象之间的相等性。