Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java string comparison not working? [duplicate]

I'd like to think it's simple but I just can't understand how to do this :( I've tried both == and equals so far but i got neither of them to work. Here's a small programming calculating grades for the swedish highschool system (so just ignore the swedish and look at the string comparisons. The problem here being that the statistics function variables are still set to 0 at the end of the program.

import javax.swing.*;

public class Uppgift1 {
private String[] subjects = {"Matematik","Svenska","Engelska","Idrott",
            "Bild","Fysik","Biologi","Kemi","Historia","Geografi",
            "Samhällskunskap","Religionskunskap"};`

private String[] grades = new String[subjects.length]; // Lika många element som ämnen

public void setGrades() {
    for(int i = 0; i < grades.length; i++){
        grades[i] = JOptionPane.showInputDialog("Ange betyg i " + subjects[i] + " (IG, G, VG, MVG)");
    }
}

public void statistics() {
    int ig = 0;
    int g = 0;
    int vg = 0;
    int mvg = 0;
    int points = 0;

    for(int i = 0; i < grades.length; i++){
        if(grades[i].equals("IG")){
            ig++;
        }

        else if(grades[i] == "G"){
            g++;
            points += 10;
        }

        else if(grades[i] == "VG"){
            vg++;
            points += 15;
        }

        else if(grades[i] == "MVG"){
            mvg++;
            points += 20;
        }
    }

    String output = new String("BETYGSSTATISTIK\n");
    output += "IG: " + ig + "\n";
    output += "G: " + g + "\n";
    output += "VG: " + vg + "\n";
    output += "MVG: " + mvg + "\n";
    output += "Betygspoäng: " + points;

    JOptionPane.showMessageDialog(null, output);
}

public static void main(String[] args) {
    Uppgift1 prog = new Uppgift1();
    prog.setGrades();
    prog.statistics();
}
}
like image 400
Latedi Avatar asked Oct 22 '12 17:10

Latedi


2 Answers

You have used the first comparison correctly, but later on, you got it the wrong way some how.

Always use equals() method when comparing the content of strings, as you did in the first case.

Also, if its not working somehow, it may be because you have leading or trailing whitespace in your string. Try using it this way: -

if (grades[i].trim().equals("IG"))
like image 63
Rohit Jain Avatar answered Nov 03 '22 10:11

Rohit Jain


You need to make all the String verifications with the equals method. Change your ifs to do it, instead of comparing with ==

like image 25
Daniel Pereira Avatar answered Nov 03 '22 11:11

Daniel Pereira