J'ai ce problème:
J'ai écrit cette fonction car j'ai besoin d'obtenir l'index de l'occurrence d'une chaîne particulière st
dans un tableau de chaînes
static public int indicestring(String[] array, String st) {
int ret = -1;
for (int i = 0; i < array.length; i++){
if (st.equals(array[i])) {
ret=i;
break;
}
}
return ret;
}
J'ai alors appelé:
System.out.println("indicestring(NODO,"ET2"));
et j'ai obtenu le bon numéro.
Mais quand je le fais:
String[] arcos2 = linea.split("-");//reading from a file and separating by "-"
String aux = arcos2[1];
System.out.println(arcos2[1]);
System.out.println(aux);
if (aux.equals(arcos2[1])) {
System.out.println("Is equal 1");
}
if (aux.equals("ET2")) {
System.out.println("Is equal 2");
}
if ("ET2".equals(aux)) {
System.out.println("is equal 3");
}
Les deux premiers tirages ont été ET2
, mais alors il n'a imprimé que des 3 ifs est "Est égal à 1" .... Le problème est que j'ai près de 200 nœuds comme "ET2" et seulement 3 échouent et me donnent -1 dans la première fonction ...
Ma question est....Suis-je en train de mal utiliser les tableaux pour enregistrer et comparer les données, car si aux = arcos2 [1] = "ET2", pourquoi "aux.equals (" ET2 ")" ou "arcos2 [1] .equals (" ET2) " Ca ne fonctionne pas ? Y a-t-il une autre fonction que vous pouvez recommander d'essayer? (J'ai essayé de changer compareTo() == 0
et cela ne fonctionnait pas non plus et la coupe était également recommandée).
Avant, j'avais une erreur similaire où je comparais deux tableaux comme celui-ci:
if(a[0] == b[0] && a[1] == b[1])
Il y avait un cas qui était clairement correct, mais il a été ignoré ... Mais cela a été corrigé quand je l'ai changé en:
if (Arrays.equals(a, b))
Y a-t-il peut-être un changement comme ça
Réponses:
0 pour la réponse № 1Vous devez placer un point d'arrêt de débogage dans le code et ajouter des surveillances d'expression pour identifier la cause racine du problème.