比较Java中的字符串数组和变量

3

我有一个困境,我正在尝试找到比较字符串变量(code)和字符串数组的最佳方法。如果它相等,我希望它可以中断for循环。我应该选择哪种方法?我认为第二种方法会起作用,但第一种方法似乎也可以,并且更简单。任何建议将不胜感激。

String[] badcodes = {"8QQ", "8BQ", "8JQ"};
if (code.equals(badcodes)) {
    break;
}

String[] badcodess = {"8QQ", "8BQ", "8JQ"};
for (String s : badcodess) {
    if (s.equals(code)) {
        break; // break out of for loop
    }
}

抱歉,我需要更具体的翻译内容才能开始工作。
String[] badcodes = {"8QQ", "8BQ", "8JQ"};
boolean check = Arrays.asList(badcodess).contains(code);
if (check = true) {
    // do something
} else {
    // do something
}

你的意思是,如果数组中的任何一个字符串等于code的值? - Federico klez Culloca
将一个名为(code)的字符串变量与一个字符串数组进行比较。一个字符串将永远不会等于一个字符串数组。 - takendarkk
是的,那是正确的,谢谢。 - Jonathan
2个回答

2
你的第一个选项无法达到你期望的效果。即使someArray.equals(anotherArray)可以进行逐个元素比较(事实并非如此),你仍需要让特殊数组包含现有数组中的所有对象,并且排列顺序完全相同。在这个意义上:首先要理解为什么这种方法在很多方面都是有缺陷的,然后放弃它。
第二个选项是可以的,但如果你真的想“改进”整个过程 - 使用ArrayList替代- 它具有contains()方法。

2
你可以将你的数组转换为一个列表,然后使用 List::contains 来检查列表是否包含该代码:
boolean check = Arrays.asList(badcodess).contains(code);

我在上面写了一些代码,我想使用一个if语句,这样可以吗?因为在布尔检查中,我正在检查它是否为真或不正确? - Jonathan
@Jonathan,你可以直接使用if (check){//做某事}else{//做其他事},不需要使用check = true。这是一个赋值操作而不是比较操作,要检查check是否等于true,你需要使用双等号。 - Youcef LAIDANI
你是说我不需要写 check = true 吗? - Jonathan
只需使用if(check),它等同于if(check == true) - Youcef LAIDANI
1
好的,我明白了。如果它包含代码,就执行这个操作;如果没有,就执行另一个操作。不需要检查 check = true,因为如果它等于 true,你无论如何都会做某些事情。我明白了,我懂了。 - Jonathan

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