Ich habe dieses Problem:
Ich habe diese Funktion geschrieben, weil ich den Index des Vorkommens einer bestimmten Zeichenfolge abrufen muss st
in einem String-Array
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;
}
Ich rief dann an:
System.out.println("indicestring(NODO,"ET2"));
und ich habe die richtige Nummer bekommen.
Aber wenn ich das tue:
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");
}
Die ersten beiden Abzüge waren ET2
, aber dann wird nur von den 3 ifs gedruckt "Ist gleich 1" .... Die Sache ist, ich habe fast 200 Knoten wie "ET2" und nur 3 fallen aus und geben mir -1 in der ersten Funktion ...
Meine Frage ist....Ich verwende die Arrays falsch, um die Daten zu speichern und zu vergleichen, denn wenn aux = arcos2 [1] = "ET2", warum ist "aux.equals (" ET2 ")" oder "arcos2 [1] .equals (" ET2) " funktioniert nicht ? Gibt es eine andere Funktion, die Sie empfehlen können (ich habe versucht, gleich mit zu ändern)? compareTo() == 0
und das hat auch nicht geklappt und das schneiden wurde auch empfohlen).
Früher hatte ich einen ähnlichen Fehler, als ich zwei Arrays wie diesen verglich:
if(a[0] == b[0] && a[1] == b[1])
Es gab einen Fall, der eindeutig richtig war, aber ignoriert wurde ... Aber es wurde korrigiert, als ich es änderte:
if (Arrays.equals(a, b))
Gibt es vielleicht eine solche Veränderung?
Antworten:
0 für die Antwort № 1Sie sollten einen Debug-Haltepunkt in den Code einfügen und Ausdrucksüberwachungen hinzufügen, um die Hauptursache des Problems zu identifizieren.