Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java字符串比较不起作用?_Java_String_Comparison - Fatal编程技术网

Java字符串比较不起作用?

Java字符串比较不起作用?,java,string,comparison,Java,String,Comparison,我想这很简单,但我就是不明白怎么做:(到目前为止,我已经尝试了==和equals,但两个都没用。下面是一个计算瑞典高中系统分数的小程序(所以忽略瑞典语,看看字符串比较。这里的问题是统计函数变量在程序结束时仍然设置为0 import javax.swing.*; public class Uppgift1 { private String[] subjects = {"Matematik","Svenska","Engelska","Idrott", "Bild","Fy

我想这很简单,但我就是不明白怎么做:(到目前为止,我已经尝试了==和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();
}
}
import javax.swing.*;
公开课1{
私有字符串[]主题={“Matematik”、“Svenska”、“Engelska”、“Idrott”,
“Bild”、“Fysik”、“Biologi”、“Kemi”、“Historia”、“Geografi”,
“Samhällskunskap”、“Religionskunskap”}`
私有字符串[]等级=新字符串[subjects.length];//像många元素somämnen
公营机构职系({
对于(int i=0;i
您正确地使用了第一次比较,但后来,您以错误的方式使用了它

在比较字符串内容时,请始终使用
equals()
方法,就像在第一种情况下一样

此外,如果它不起作用,可能是因为字符串中有
前导
尾随
空格。请尝试以这种方式使用它:-

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

您需要使用
equals
方法进行所有
字符串的验证。更改您的ifs进行验证,而不是与
==

进行比较。使用
equals
重试。如果仍然不起作用,请重新发布。您是否尝试打印成绩?还应考虑到字母表I可能是瑞典字符ter没有使用asciiYeah我现在试过了,它很有效。而且瑞典字符不参与任何计算,所以它们应该不会成为问题。噢,哇,它起作用了。虽然很奇怪,因为我把equals和==都弄乱了,但我从来没有让所有的语句都是equals。谢谢:)@Latedi.是的,那很好。我在你的字符串中看到了一些空格,所以我认为这可能是个问题。是的,我会…它说我必须再等两分钟左右,我会接受的。关于使用trim()的提示让我从绝望和困惑中解脱出来,谢谢你!你的小回答让我再次了解了一切…天哪。非常感谢