Android studio 无需将值2置于值1之上

Android studio 无需将值2置于值1之上,android-studio,kotlin,intellij-idea,kotlin-coroutines,control-flow,Android Studio,Kotlin,Intellij Idea,Kotlin Coroutines,Control Flow,问题:提出一个重复5次并在其中加载3个整数值的结构。仅累积三个值列表中的最大值 我有一个问题,因为在本练习中,没有必要将值2>值1放在第二行 fun main(parametro: Array<String>) { var suma = 0 for(i in 1..5) { print("Ingrese primer valor:") val valor1 = readLine()!!.toInt() print("Ingrese segundo valor:

问题:提出一个重复5次并在其中加载3个整数值的结构。仅累积三个值列表中的最大值

我有一个问题,因为在本练习中,没有必要将值2>值1放在第二行

fun main(parametro: Array<String>) {
var suma = 0
for(i in 1..5) {
    print("Ingrese primer valor:")
    val valor1 = readLine()!!.toInt()
    print("Ingrese segundo valor:")
    val valor2 = readLine()!!.toInt()
    print("Ingrese tercer valor:")
    val valor3 = readLine()!!.toInt()
    suma += when {
        valor1 > valor2 && valor1 > valor3 -> valor1
        valor2 > valor3 -> valor2
        else -> valor3
    }
}
println("El valor acumulado de los mayores de cada lista de 3 valores es : $suma")
}

这是真的,当且仅当valor1是最高值。 如果valor1等于或小于valor2或valor3或两者,则为false 如果第1行为false,那么valor1必须是valor3,它也>=valor1,因为这是在第1行中检查的 如果valor2==valor3,则其中任何一个都必须>=valor1,否则第1行将为真。 剩下的是,valor1可以是==valor3,在这种情况下,返回valor1或valor3并不重要。Line1为false,Line2为true,仅当valor2大于valor1和3时

更清楚地说:

Valor1 Valor2 Valor3 Line1  Line2 Result
  1      2      3    False  False Valor3 = 3
  1      3      2    False  True  Valor2 = 3
  3      2      1    True   -     Valor1 = 3 
  1      1      2    False  False Valor3 = 2
  1      2      1    False  True  Valor2 = 2
  2      1      1    True   -     Valor1 = 2
  2      1      2    False  False Valor3 = 2
  2      2      1    False  True  Valor2 = 2
  1      1      1    False  False Valor3 = 1
这是真的,当且仅当valor1是最高值。 如果valor1等于或小于valor2或valor3或两者,则为false 如果第1行为false,那么valor1必须是valor3,它也>=valor1,因为这是在第1行中检查的 如果valor2==valor3,则其中任何一个都必须>=valor1,否则第1行将为真。 剩下的是,valor1可以是==valor3,在这种情况下,返回valor1或valor3并不重要。Line1为false,Line2为true,仅当valor2大于valor1和3时

更清楚地说:

Valor1 Valor2 Valor3 Line1  Line2 Result
  1      2      3    False  False Valor3 = 3
  1      3      2    False  True  Valor2 = 3
  3      2      1    True   -     Valor1 = 3 
  1      1      2    False  False Valor3 = 2
  1      2      1    False  True  Valor2 = 2
  2      1      1    True   -     Valor1 = 2
  2      1      2    False  False Valor3 = 2
  2      2      1    False  True  Valor2 = 2
  1      1      1    False  False Valor3 = 1

如果valor1最大,则不可能通过when语句的第一个条件,因此没有逻辑理由再次检查它是否可能大于valor2

您可以更简单地比较这些和任意数量的项目

suma += intArrayOf(valor1, valor2, valor3).max()

如果valor1最大,则不可能通过when语句的第一个条件,因此没有逻辑理由再次检查它是否可能大于valor2

您可以更简单地比较这些和任意数量的项目

suma += intArrayOf(valor1, valor2, valor3).max()