Emaneitron
Emaneitron

Reputation: 83

Java: I compare two Strings but it didn't recognize it

I have this problem:

I wrote this function because I need to get the index of the occurrence of a particular string st in a 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;
}

I then called:

System.out.println("indicestring(NODO,"ET2"));

and I got the correct number.

But then when I do:

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");
}

The first two prints were ET2, but then it only printed of the 3 ifs is "Is equal 1".... The thing is I have nearly 200 nodes like "ET2" and only 3 are failing and giving me -1 in the first function...

My question is....Am I using wrong the arrays to save and compare the data, because if aux=arcos2[1]="ET2", why is 'aux.equals("ET2") 'or 'arcos2[1].equals("ET2)' not working ? Is ther another function you can recommend to try?(I tried changing equals with compareTo() == 0 and that didn't work either and trimming was also recommended).

Before, I had a similar error where I compare two arrays like this:

if(a[0] == b[0] && a[1] == b[1])

There was a case that clearly was correct but it was ignored... But it got corrected when a i changed it to:

if (Arrays.equals(a, b))

Is there maybe some change like that

Upvotes: 3

Views: 123

Answers (1)

Dev707
Dev707

Reputation: 69

You should put a debug break point in the code and add expression watches to identify the root cause of the problem.

Upvotes: 1

Related Questions