【问题标题】:Is there a cleaner way of doing this if statement?有没有更简洁的方法来执行此 if 语句?
【发布时间】:2020-02-26 03:35:17
【问题描述】:
if(input.charAt(i) == '0' || input.charAt(i) == '1' || input.charAt(i) == '2') {
}

有没有办法压缩这个 if 条件,或者没有?

【问题讨论】:

  • 创建一个数组,检查它是否包含值:/
  • 一个 switch 语句。

标签: java if-statement charat


【解决方案1】:

您可以检查该字符是否与普通String 中的任何索引匹配。喜欢,

if ("012".indexOf(input.charAt(i)) > -1) {

}

【讨论】:

  • @Steven 您必须对其进行基准测试,而这极不可能成为实际应用程序中的关键路径。我怀疑它是可测量的。就像使用switch(input.charAt(i)) { case '0': case '1': case '2': /* code */ } 可能与OP 的帖子完全相同。
【解决方案2】:

也许更具可读性(在 java 9+ 中)

if (Set.of('0', '1', '2').contains(input.charAt(i))) {

}

【讨论】:

    【解决方案3】:

    您可以通过将字符查找结果分配到一个变量中来使其更短(但仍然需要三个相等性检查)。

    char c = input.charAt(i);
    if(c == '0' || c == '1' || c == '2') {
    }
    

    您可以查看其他答案,例如创建 Set/Array 并执行 contains 检查未来相等检查的数量是否会增加。 IMO,三张支票按原样写应该没问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 2023-03-08
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多