If statement Kotlin中三角形条件的实现
我在Kotlin中编写了下面的代码,以检查三个值a、b和c是否可以组成一个三角形。法律规定这三个条件必须成立:(a+b>c);(b+c>a);(a+c>b),其中a、b和c是三角形边的值。我写了下面的代码,运行时发现它没有输出,也没有错误 后来,我将下面的三个if语句替换为:(a+b>c&&b+c>a&&a+c>b),从而获得了正确的代码。请告诉我为什么它没有输出。谢谢 导入java.util* 趣味主线(args:Array){ val扫描器=扫描器(系统中的If statement Kotlin中三角形条件的实现,if-statement,kotlin,conditional-statements,java.util.scanner,If Statement,Kotlin,Conditional Statements,Java.util.scanner,我在Kotlin中编写了下面的代码,以检查三个值a、b和c是否可以组成一个三角形。法律规定这三个条件必须成立:(a+b>c);(b+c>a);(a+c>b),其中a、b和c是三角形边的值。我写了下面的代码,运行时发现它没有输出,也没有错误 后来,我将下面的三个if语句替换为:(a+b>c&&b+c>a&&a+c>b),从而获得了正确的代码。请告诉我为什么它没有输出。谢谢 导入java.util* 趣味主线(args:Array){ val扫描器=扫描器(系统中的) }如果你是用C写的,我想你身体
)
}如果你是用C写的,我想你身体的这一部分(a+b>C&&b+C>a&&a+C>b)
应该是这样的+u不会返回任何结果
if ((a + b > c ) && (b + c > a) && (a + c > b))
return ("YES")
else
return ("NO")
让我们修复代码中的缩进:
if (a + b > c) {
if (b + c > a) {
if (a + c > b) {
println("YES")
} else {
println("NO")
}
}
}
这有助于说明发生了什么吗
如果第一个或第二个条件为false,则跳过其余条件。只有当两者都为真时,才会检查第三个,并相应地打印“是”或“否”
(当人们省略大括号时,你通常会看到这种混乱;如果没有大括号,else
条件适用于最近的、最里面的if
,这可能会令人惊讶。但这里的大括号是为了说明问题!)
如果您总是希望它打印某些内容,那么有三个主要选项。首先,将条件折叠为单个(如果
),正如您已经发现的:
if (a + b > c && b + c > a && a + c > b) {
println("YES")
} else {
println("NO")
}
这是最简单的方法,但如果条件大或复杂,可能会变得非常笨拙
其次,为每个if
添加else
分支:
if (a + b > c) {
if (b + c > a) {
if (a + c > b) {
println("YES")
} else {
println("NO")
}
} else {
println("NO")
}
} else {
println("NO")
}
val checkA = a < b + c
val checkB = b < c + a
val checkC = c < a + b
if (checkA && checkB && checkC) {
println("YES")
} else {
println("NO")
}
这是冗长且重复的,但可能是必要的(例如,如果内部if
前面有其他语句)
第三,如果
,您可以将条件移到之外:
if (a + b > c) {
if (b + c > a) {
if (a + c > b) {
println("YES")
} else {
println("NO")
}
} else {
println("NO")
}
} else {
println("NO")
}
val checkA = a < b + c
val checkB = b < c + a
val checkC = c < a + b
if (checkA && checkB && checkC) {
println("YES")
} else {
println("NO")
}
val checkA=a
当条件变得复杂时,这会更容易阅读,特别是当您可以为它们指定好的简单描述时。在两者之间,你可以做任何你需要的计算。但缺点是没有短路:它总是评估所有条件,即使第一个条件是错误的。如果以后的情况有任何副作用,或涉及大量工作,这一点很重要。fun main(){
fun main() {
println(checkTriangle(1, 2, 3))
}
fun checkTriangle(a: Int, b: Int, c: Int): String {
return when (a + b <= c || a + c <= b || b + c <= a) {
true -> "YES"
else -> "NO"
}
}
println(方格三角形(1,2,3))
}
有趣的checkTriangle(a:Int,b:Int,c:Int):字符串{
返回何时(a+b)可以发布更新的代码吗?在当前代码中,只有前两个条件为真时才会输出。