Java for循环判断合法三角形

标签 java loops for-loop optimization

如果两条边的总和大于第三条边,则三个数字形成一个合法的三角形。因此 [7,3,6] 和 [8,8,8] 有效,而 [2,6,4] 和 [8,6,1] 无效。我得到一个只有 3 个值的数组。

public boolean isLegalTriangle(double[] lens){
  a = lens[0]
  b = lens[1]
  c = lens[2]

  return ( a+b > c && b+c > a && a+c > b )
}

这是我写的代码。是否可以用 for 循环重写它? (对索引进行硬编码似乎很原始)

最佳答案

您可以使用取模来实现此目的:

public boolean isLegalTriangle(double[] lens){
    int l = lens.length;
    for (int i = 0 ; i < l; i++) {
        if ( lens[i%l] + lens[(i+1)%l] <= lens[(i+2)%l] ) {
            return false;
        }
    }
    return true;
}

您将进行 3 次迭代:

  • i = 0

    lens[0] + lens[1] <= lens[2]
    
  • i = 1

    lens[1] + lens[2] <= lens[0]
    
  • i = 2

    lens[2] + lens[0] <= lens[1]
    

关于Java for循环判断合法三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30619928/

相关文章:

swift - 如何为所有正在运行的应用程序添加监听器

python - 每当触发 else 语句时,如何在 for 循环中创建新列表

for-loop - 迭代(for循环)一目了然

java - CXF 3 缓存级别

java - 如果转换为其实现的接口(interface),则获取原始类

java - Intellij IDEA 中更简单的建议(无 `CTRL+Space` 和模糊搜索)

javascript - 如何使用 for 循环掷多个骰子?

java - 如何在 Android SDK 中创建堆栈面板菜单?

c++ - 遍历 for 循环,然后再次向后遍历它的最佳方法?

javascript - 为 setTimeout 创建循环