Java字符串比较无效?

13

我希望这很简单,但我就是不明白如何做到这一点:( 到目前为止,我已经尝试了“==”和“equals”,但都没有奏效。这是一个计算瑞典高中成绩的小程序(所以请忽略瑞典语并查看字符串比较)。问题在于统计函数变量在程序结束时仍然设置为0。

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

请尝试使用 equals。如果仍然无法正常工作,请重新发布。 - John B
你尝试过打印成绩吗?还要考虑到,我使用的字母表可能是瑞典字符,不使用ASCII编码。 - Wins
是的,我现在尝试了一下,它可以工作。此外,瑞典字符不参与任何计算,因此不应该成为问题。 - Latedi
2个回答

45

你在最初的比较中使用了正确的方法,但后来不知何故弄错了。

当比较字符串内容时,始终使用equals()方法,就像你在第一个例子中做的那样。

此外,如果它无法正常工作,可能是因为你的字符串中有前导或尾随空格。尝试这样使用:

if (grades[i].trim().equals("IG"))

哦,哇,它正在工作。不过很奇怪,因为我玩了等于和==,但从来没有所有的语句都是等于。谢谢 :) - Latedi
@Latedi。是的,很好。我看到你字符串中有一些空格,所以我想这可能会是个问题。 - Rohit Jain
好的,我会等待。不过它说我需要等待:(再等大约两分钟,我就会接受它。 - Latedi
使用trim()的提示让我免于陷入绝望和困惑的深渊,谢谢! - SubJunk

4
你需要使用equals方法进行所有String的验证。将你的if语句更改为使用该方法进行比较,而不是使用==进行比较。

你那简短的回答让我不得不重新学习一切……天啊。非常感谢。 - PYK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接