如何检查数组是否包含元素?
How to check if an array contains elements?
我是 Java 的新手。
我有一个看起来像这样的数组 (Array). (I've used Array.toString to print this). This is how the array is made: arraymade。
这是从以下格式的文件中读取和制作的:
Nilsson;Lars;u;g;vg;vg
Svensson;Lena;vg;g;g;vg
Jonsson;Jonas;g;g;vg;g
我正在尝试制作一种方法,根据对象数组包含的内容,return可以是 "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;
}
}
这是我现在的代码,但它似乎不起作用,因为它只有 returns "g",即使数组包含 "u"。
另外,如您所见,我希望该方法在找到 2 vg:s 时仅 return vg,因为您需要 2 vg:s 才能获得等级 vg。那么我如何检查这里的双元素?
首先,您应该重新考虑您的要求。一个字符串(如 u
)的存在并不排除其他字符串(如两个 vg
或一个 g
)的存在,也不排除缺少 u
和两个vg
s 证明了 g
的存在。您发布的示例在这方面已经不一致。
除此之外,您的方法缺少变量声明 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";
}
更接近您的原始结构的解决方案,也可能被认为更简单的是
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";
}
}
但它可能会不必要地计算 2
之外 vg
的出现次数。
我是 Java 的新手。
我有一个看起来像这样的数组 (Array). (I've used Array.toString to print this). This is how the array is made: arraymade。 这是从以下格式的文件中读取和制作的:
Nilsson;Lars;u;g;vg;vg
Svensson;Lena;vg;g;g;vg
Jonsson;Jonas;g;g;vg;g
我正在尝试制作一种方法,根据对象数组包含的内容,return可以是 "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;
}
}
这是我现在的代码,但它似乎不起作用,因为它只有 returns "g",即使数组包含 "u"。
另外,如您所见,我希望该方法在找到 2 vg:s 时仅 return vg,因为您需要 2 vg:s 才能获得等级 vg。那么我如何检查这里的双元素?
首先,您应该重新考虑您的要求。一个字符串(如 u
)的存在并不排除其他字符串(如两个 vg
或一个 g
)的存在,也不排除缺少 u
和两个vg
s 证明了 g
的存在。您发布的示例在这方面已经不一致。
除此之外,您的方法缺少变量声明 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";
}
更接近您的原始结构的解决方案,也可能被认为更简单的是
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";
}
}
但它可能会不必要地计算 2
之外 vg
的出现次数。