【问题标题】:Comparing string array to variable Java [duplicate]将字符串数组与变量Java进行比较[重复]
【发布时间】: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[]
  • 是的,谢谢

标签: java arrays string foreach


【解决方案1】:

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

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

【讨论】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    相关资源
    最近更新 更多