没有必要将值 2> 值 1
it is not necessary to place value 2> value 1
问题:提出一个重复 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 > valor2 && valor1 > valor3 -> valor1
- 当且仅当 valor1 是最高值时,这是正确的。
- 如果 valor1 等于或小于 valor2 或 valor3(或两者),则为假
valor2 > valor3 -> valor2
- 如果第 1 行为假,则 valor1 必须 <= valor2 或 valor3(或两者)。
- 然后,如果 valor2 > valor3,它也是 >= valor1(因为在第 1 行中检查过)
- 如果 valor2 == valor3,则它们中的任何一个必须 >= valor1,否则 Line1 为真。
剩下的是 valor1 可能 == valor3,在这种情况下,您 "return" valor1 还是 valor3 都没有关系。仅当 valor2 大于 valor1 和 3 时,Line1 为假,Line2 为真。
为了更清楚:
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()
问题:提出一个重复 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 > valor2 && valor1 > valor3 -> valor1
- 当且仅当 valor1 是最高值时,这是正确的。
- 如果 valor1 等于或小于 valor2 或 valor3(或两者),则为假
valor2 > valor3 -> valor2
- 如果第 1 行为假,则 valor1 必须 <= valor2 或 valor3(或两者)。
- 然后,如果 valor2 > valor3,它也是 >= valor1(因为在第 1 行中检查过)
- 如果 valor2 == valor3,则它们中的任何一个必须 >= valor1,否则 Line1 为真。
剩下的是 valor1 可能 == valor3,在这种情况下,您 "return" valor1 还是 valor3 都没有关系。仅当 valor2 大于 valor1 和 3 时,Line1 为假,Line2 为真。
为了更清楚:
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()