【问题标题】:For loop to fill if statement parametersFor循环填充if语句参数
【发布时间】:2014-01-23 14:07:44
【问题描述】:

我正在使用基本的 if 语句,例如

if(b==0 || b==2)
{
    //do something
}

问题是在使用时 b 可能等于超过 2 个整数...或更少。我试过写。

if(
   /* for loop to check b against an ArrayList of ints adding || if iteration is anything but the ArrayLists size - 1 */
){
   //do something
}

Eclipse 显然不允许我这样做。有没有办法处理可能不同数量的 b==0 || b==2 || b==...?

**编辑

if 语句已经在循环 b 的 for 循环中

【问题讨论】:

  • 我不完全确定您要完成什么,但您可以在 for 循环中尝试 if 而不是相反。
  • 为什么不将可接受的数字添加到 List 然后做一个可接受的Numbers.contains(b)?
  • b 怎么可能等于 2 个以上的整数?不代表单个整数?
  • b may be equal to more than 2 integers,对不起。不可能。
  • 我写了一个节拍器,它将合成声音(两种声音之一)写入数组并写入 AudioTrack。声音由我们所在的小节的哪个节拍决定。 (所以对于音乐分组,这可能只是 1...或 1、3 和 5)...

标签: java if-statement for-loop


【解决方案1】:

您可以创建要检查的所有整数的列表,并使用contains()

List<Integer> values = Arrays.asList(0, 2, 5, 7);
if (values.contains(b)) {
   ...
}

【讨论】:

  • 为什么不使用HashSet?那么查找不是O(1) 而不是O(n)
  • @crush:我不认为增加的复杂性值得在这里,但当然,您可以使用HashSet 来提高性能。
  • 真的更复杂吗?
  • @crush:没有这么清楚。像这样的琐碎问题过早优化在 IMO 很少是一个好主意,但意见可能会有所不同。
  • 我不同意。当代码还没写完时,这并不是过早的优化。过早的优化会迷恋于您已经编写的代码的性能。如果您已经知道一种技术是适合这项工作的工具,那么您没有理由不使用它。我不确定您为什么如此坚定地捍卫您将 List 用作查找表。基本上,如果集合中的项目超过 6 个,那么 HashSet 就是完成这项工作的工具。
猜你喜欢
  • 2021-10-24
  • 2013-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
相关资源
最近更新 更多