Un if con array de string

aleperezb
04 de Mayo del 2006
tengo el siguiente codigo:
for (int i = 0; i < Ik.length; i++) {
if (Ik[i]=="I1" & IxP[0][0]>=0.5) {
Pfit[i] = P[0];
}
else if (Ik[i]=="I1" & IxP[0][0]<0.5) {
Pfit[i] = P[1];
}
else if (Ik[i]=="I2" & IxP[1][0]>=0.5) {
Pfit[i] = P[0];
}
else if (Ik[i]=="I2" & IxP[1][0]<0.5) {
Pfit[i] = P[1];
}
else if (Ik[i]=="I3" & IxP[2][0]>=0.5) {
Pfit[i] = P[0];
}
else if (Ik[i]=="I3" & IxP[2][0]<0.5) {
Pfit[i] = P[1];
}
else {
Pfit[i] = "?";
}}

el Ik es un array de string que contiene I1, I2, I3 .... y el array IxP es de doubles, no se porque pero solo ejecuta el else, es decir solo asigna ? a Pfit[i] y hay condiciones if else ciertas. ¿que esta mal?
HELP ME!!!!!

Amaia
04 de Mayo del 2006
Hola:
En los ifs de primeras se pone && dos veces,
if (Ik[i]=="I1" && IxP[0][0]>=0.5) {
Pfit[i] = P[0];
}
else if (Ik[i]=="I1" && IxP[0][0]<0.5) {
Pfit[i] = P[1];
No se si puede que sea por eso.

xavia
04 de Mayo del 2006
Puede ser que esté haciendo un & entre dos cadenas... xP tiene razon, si lo que quieres es comparar dos cadenas de principio está bien... pero deberías empezar por sabes que es lo que quieres comparar, lo mejor es que te bajes un paquete de utilidades tales como equals, toString,.... y hacer bien las cosas. Si necesitas más, escríbelo

Diego
04 de Mayo del 2006
Todo lo que no sea byte, short, int, long, float, double, char o boolean es un objeto, y por tanto, tienen definido un método equals para definir la igualdad (te recomiendo que en las clases que definas tú lo sobreescribas, si va a ser necesario comparar si un objeto es igual a otro), puesto que se hereda de Object, que es la clase raíz de cualquier objeto en Java, desde un String a un array, pasando por un File. Con == comparas la posición en memoria, que siempre será diferente salvo que se compare el mismo objeto, en la misma posición de memoria. Además, utiliza && en lugar de &, que se utiliza para realizar operaciones sobre los bits que representan internamente a un objeto. Te recomiendo que te leas un manual, como "Aprenda Java como si estuviera en primero".
Espero que te sirva.