简体   繁体   中英

equality between two strings

I have a text file with this structure:

CRIM:Continuius
ZN:Continuius
INDUS:Continuius
CHAS:Categorical
NOX:Continuius   

I inserted it into a two dimensional array:

BufferedReader description = new BufferedReader(new FileReader(fullpath2));
        String[][] desc;
        desc = new String[5][2];

        String[] temp_desc;
        String delims_desc = ":";
        String[] tempString;

        for (int k1 = 0; k1 < 5; k1++) {
            String line1 = description.readLine();
            temp_desc = line1.split(delims_desc);
            desc[k1][0] = temp_desc[0];
            desc[k1][1] = temp_desc[1];
        }

and then tried to identify which attribute is Categorical:

        String categ = "Categorical";
        for (int i=0; i<5; i++){
            String temp1 = String.valueOf(desc[i][1]);
            if ("Categorical".equals(desc[i][1])){
                System.out.println("The "+k1+ " th is categorical.");
}
}

Why doesn't it return true , although one of the attributes is categorical?

Looking at the input you posted (in the edit perspective ), I saw there is a lot of trailing whitespace on almost every line of the textfile. Your problem will disappear if you replace

desc[k1][1] = temp_desc[1];

with

desc[k1][1] = temp_desc[1].trim();

You could even shorten your code to

for (int k1 = 0; k1 < 5; k1++) {
    String line1 = description.readLine().trim();
    desc[k1] = line1.split(delims_desc);
}

Clarification:

You are trying to compare

"Categorical" // 11 characters

with

"Categorical        " // more than 11 characters

and those are not equal strings.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM