es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo funciona este Operador Ternario con esta declaración?

He generado este método para encontrar el valor máximo en alguna matriz y de alguna manera pude cambiar el valor de tipo “int” dentro del Operador Ternario (java 8)

int max = 0, indexToReturn = 0;
int size = arr[0].length;
for (int i = 1; i < size; i++)
{
//
// ¯_(ツ)_/¯
max = (!(arr[j][indexToReturn] > arr[j][i])) ? indexToReturn = i : arr[j][indexToReturn];
}
return max > 0 || indexToReturn == size – 1 ? arr[j][indexToReturn] : null;

(el método compila y funciona)

No estoy seguro de cómo se compila, según lo que vi en línea, la sintaxis del Operador Ternario es:

variable = Expresión1 ? Expresión2 : Expresión3

¿Alguien puede explicarme qué me falta aquí?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El código que has proporcionado utiliza el Operador Ternario de una manera ligeramente diferente a la sintaxis típica.

    En este caso, el Operador Ternario se está utilizando como una declaración if-else abreviada. La expresión antes del ? se evalúa como una condición booleana. Si es true, entonces la expresión inmediatamente después del ? se ejecuta y su valor se asigna a la variable del lado izquierdo del =. Si la condición es false, entonces la expresión inmediatamente después del : se ejecuta y su valor se asigna a la variable del lado izquierdo del =.

    En tu código, la expresión antes del ? es una negación de una expresión booleana (!(arr[j][indexToReturn] > arr[j][i])). Si esto es true, entonces el valor de indexToReturn se establece en i y el valor de toda la expresión (que es el nuevo valor de indexToReturn) se asigna a max. Si la expresión antes del ? es false, entonces el valor actual de max se asigna a indexToReturn.

    En resumen, este código utiliza el Operador Ternario para actualizar el valor de max e indexToReturn en una línea, en función del resultado de la expresión booleana.

    Si bien esta es una forma válida de utilizar el Operador Ternario, puede resultar confusa para otras personas que no estén familiarizadas con esta sintaxis abreviada. Por lo general, se recomienda escribir declaraciones if-else separadas para mayor claridad y legibilidad, especialmente en código que puede ser compartido con otros.

Comments are closed.