/ / Створення масиву int паралельно масиву java string [дублікат] - java, масиви

Внесення int масиву паралельно з Java масиву рядків [duplicate] - java, масиви

Наступний код створює рядковий рядок "one" як [c, a, t, a, n, d, d, o, g]. Тепер я хочу створити масив int "two", у якому місце кожного "a" - 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

Відповіді:

6 за відповідь № 1

Ви використовуєте == ні .equals() для порівняння рядків.

Використовуйте one[j].equals("a").


2 для відповіді № 2

Ти використовуєш == при порівнянні примітивів, як int, double, charі т. д.

При порівнянні об'єктів треба використовувати метод equals (), який є методом, який успадковує кожен об'єкт від класу Object.

Це з javadocs:

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

Оскільки String є об'єктом, а не примітивом, потрібно використовувати метод equals, щоб перевірити рівність двох об'єктів String.