Java 如何检查数组是否包含元素?

Java 如何检查数组是否包含元素?,java,arrays,object,methods,element,Java,Arrays,Object,Methods,Element,我是Java新手 我有一个像这样的数组。(我已经使用Array.toString打印了这个)。以下是数组的生成方式:。 这是从以下格式的文件中读取和制作的: Nilsson;Lars;u;g;vg;vg Svensson;Lena;vg;g;g;vg Jonsson;Jonas;g;g;vg;g 我试图创建一个根据对象数组包含的内容返回“u”、“vg”或“g”的方法 @Override public String getKursbetyg() { if (Arrays.asLis

我是Java新手

我有一个像这样的数组。(我已经使用Array.toString打印了这个)。以下是数组的生成方式:。 这是从以下格式的文件中读取和制作的:

Nilsson;Lars;u;g;vg;vg
Svensson;Lena;vg;g;g;vg
Jonsson;Jonas;g;g;vg;g
我试图创建一个根据对象数组包含的内容返回“u”、“vg”或“g”的方法

@Override
public String getKursbetyg() {



    if (Arrays.asList(uppgiftsbetyg).contains("u")) {
        kursbetyg = "u";
        return kursbetyg;

    } else if (Arrays.asList(uppgiftsbetyg).contains("if the array contains 2 vg strings")) {
        kursbetyg = "vg";
        return kursbetyg;

    } else {
        kursbetyg = "g";
        return kursbetyg;
    }

}
这是我现在的代码,但它似乎不起作用,因为它只返回“g”,即使数组包含“u”


正如您所看到的,我希望该方法仅在找到2个vg:s时返回vg,因为您需要2个vg:s才能获得等级vg。那么如何在这里检查双元素呢?

首先,您应该重新考虑您的需求。一个字符串(如
u
)的存在并不排除其他字符串(如两个
vg
s或一个
g
)的存在,也不排除
u
和两个
vg
的存在。你贴的例子在这方面已经不一致了

除此之外,您的方法缺少变量
kursbetyg
的声明,我真的希望您不要修改字段,因为这是“get…”方法的副作用

通过搜索不包括第一个引用的子列表,可以直接搜索两个引用:

public String getKursbetyg() {
    List<String> list = Arrays.asList(uppgiftsbetyg);
    if(list.contains("u")) {
        return "u";
    }
    int index=list.indexOf("vg");
    if(index>=0 && list.subList(index+1, list.size()).contains("vg")) {
        return "vg";
    }
    return "g";
}
公共字符串getkursbeteg(){
List List=Arrays.asList(uppgitsbetyg);
如果(列表包含(“u”)){
返回“u”;
}
int index=list.indexOf(“vg”);
如果(索引>=0&&list.subList(索引+1,list.size())。包含(“vg”)){
返回“vg”;
}
返回“g”;
}
更接近原始结构的解决方案(也可能被认为更简单)是

public String getKursbetyg() {
    List<String> list = Arrays.asList(uppgiftsbetyg);
    if(list.contains("u")) {
        return "u";
    } else if(Collections.frequency(list, "vg")>=2) {
        return "vg";
    } else {
        return "g";
    }
}
公共字符串getkursbeteg(){
List List=Arrays.asList(uppgitsbetyg);
如果(列表包含(“u”)){
返回“u”;
}else if(集合频率(列表,“vg”)>=2){
返回“vg”;
}否则{
返回“g”;
}
}

但是,如果不必要地计算
vg
2

以外的
vg
的出现次数,它可能会做更多的工作。它是一维数组还是二维数组?数组的图像显示了3种不同的数组,[u,g,vg],[vg,g,vg],您使用的是哪种数组?你能告诉我们你在哪里设置uppgiftsbetyg吗?我添加了一张阵列是如何制作的图片。