12

簡単だと思いたいのですが、これを行う方法がわかりません:(これまで==と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();
}
}
4

2 に答える 2

39

最初の比較を正しく使用しましたが、後で何らかの方法で間違った方法で取得しました。

equals()最初のケースで行ったように、文字列の内容を比較するときは常にメソッドを使用してください。

また、何らかの形で機能しない場合は、文字列にleadingまたはtrailing空白が含まれている可能性があります。このように使用してみてください: -

if (grades[i].trim().equals("IG"))
于 2012-10-22T17:08:28.563 に答える
4

Stringメソッドですべての検証を行う必要がありますequals。と比較するのではなく、ifを変更してそれを行います==

于 2012-10-22T17:09:13.763 に答える