将字符串数组与变量Java进行比较[重复]

Posted

技术标签:

【中文标题】将字符串数组与变量Java进行比较[重复]【英文标题】:Comparing string array to variable Java [duplicate] 【发布时间】:2018-08-23 07:12:56 【问题描述】:

我有一个两难境地,我正在尝试找出将名为 (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的值? "将一个名为 (code) 的字符串变量与一个字符串数组进行比较" String 永远不会等于 String[] 是的,谢谢 【参考方案1】:

您可以将数组转换为列表,然后使用List::contains 检查列表是否包含代码:

boolean check = Arrays.asList(badcodess).contains(code);

【讨论】:

我在上面写了一些代码,我想使用 if 语句,这样行吗?由于签入布尔值,我正在检查它是否正确? @Jonathan 你可以只使用if (check)//do somethingelse//do something else 不需要使用check = true 这是一个分配而不是比较,检查check 是否等于真你需要使用双等号 所以你说我不必写 check = true ? 只使用if(check)就相当于if(check == true) 好的,我看看它是否包含代码,如果不这样做,请执行此检查 = true 不需要,因为如果它等于 true,您无论如何都会做某事...我明白了【参考方案2】:

您的第一个选项不会做您期望做的事情。即使someArray.equals(anotherArray) 会进行元素比较(它不会) - 您需要让特殊数组以完全相同的顺序包含现有数组的所有对象。从这个意义上说:首先了解为什么这种方法在许多方面存在缺陷,然后再放弃它。

第二个选项很好,但如果你真的想“改进”整个事情 - 请改用 ArrayList - 它有一个 contains() 方法。

【讨论】:

以上是关于将字符串数组与变量Java进行比较[重复]的主要内容,如果未能解决你的问题,请参考以下文章

java怎么让数组的数字从大到小排序?

将数组值与字符串进行比较

算法练习:求字符串的最长重复子串(Java实现)

如何将 uint8_t 数组与 C 中的字符串进行比较?

一篇让你读懂java中的字符串(String)

JAVA中的数组合并问题