feed twitter facebook LinkedIn facebook

Java » El operador ternario ?: en Java

mayo 18, 2010 por Víctor Cuervo 20 Comentarios Imprimir Imprimir

Calcular el mayor de dos números con Java es una cosa realmente sencilla con Java. Si preguntas a cualquier programador te dirá que puedes utilizar un simple if-then-else. Quedando un programa de pocas líneas.

  1. if (x>y)
  2. mayor = x;
  3. else
  4. mayor = y;

Pero lo que, sorprendentemente, muchos programadores Java no saben, es que existe un operador condicional ternario ?: que nos ayuda a realizar estas operaciones con mucho menor código.

La estructura del operador ternario ?: es la siguiente:

resultado = (condicion)?valor1:valor2;

Donde a la variable resultado recibirá el valor1 en el caso de que la condición sea true o bien el valor2 en el caso de que la condición sea false.

Así, si queremos calcular el mayor de dos números tendremos el siguiente código:

  1. mayor=(x>y)?x:y;

Sin duda alguna, mucho menos código. :-) ¿Conocías el operador ternario?

Descargar el Codigo
Descargar el código
Error en el Codigo
Error en el código
Foro sobre Java
Foro sobre Java
tags: , , ,

Artículos relacionados:

20 comentarios »

RSS feed para los comentarios de esta entrada. TrackBack URI

1 2
  1. Coatepec
    febrero 25, 2011 #

    wow interesante, gracias no sabia sobre ese operador jeje

  2. Edgar
    agosto 15, 2011 #

    lo habia visto x ahi en algun codigo pero no sabia como funcioba =).. ps ahora ya
    se te agradece

  3. Xagerao
    octubre 19, 2011 #

    Hola!
    Realmente no conocía el operador ?, muy útil la verdad, pero ahora me surge una duda ¿que es, en términos de coste temporal, mejor opción computacional?

  4. Pablo Godoy
    noviembre 9, 2012 #

    Hola, estuve usando el operador ternario, y hubo un error, por qué habrá sido?

    Este es el ejemplo:

    public static void main(String[] args) {
    Long result = null;
    String valor = “texto2″;
    result = valor.equals(“texto1″) ? 1L : result;
    result = valor.equals(“texto2″) ? 2L : result;
    result = valor.equals(“texto3″) ? 3L : result;
    System.out.println(result);
    }

  5. 0day
    enero 11, 2013 #

    Para Pablo Godoy:
    No soy ningún experto, pero veo varias causas posibles:

    a) 1L, 2L y 3L no parecen estar definidos en ningún lado
    b) Falta un paréntesis en cada línea en la que usas el operador ?, el que envuelve la condición a evaluar
    c) result puede ser null a la hora de imprimirlo en pantalla, no se hasta que punto puede pasársele un null a System.out.println

    De todas formas usar un IDE debería ayudarte a solucionar esos problemas, ya que él mismo te indica los fallos en el código, bien al momento de escribirlos, bien al compilar.

    Saludos!

  6. Pablo Godoy
    enero 11, 2013 #

    Para 0day:
    a) No hace falta declarar 1L, 2L ni 3L, ya que son valores, y no variables.
    b) No hacen falta paréntesis
    c) El valor de “Result” debería ser 2L, en vez de null, y en caso que lo fuera, no habría problemas con el System.out.println(null);

    El compilador arroja un NullPointerException, la cual extiende de RuntimeException, por lo tanto el IDE no va a mostrar ningún error, ya que no es un error en tiempo de compilación.
    Saludos!

  7. MIKI90
    febrero 14, 2013 #

    No puedes inicializar un long a null
    public static void main(String[] args) {
    long result = 0L;
    String valor = “texto2″;
    result = valor.equals(“texto1″) ? 1L : result;
    result = valor.equals(“texto2″) ? 2L : result;
    result = valor.equals(“texto3″) ? 3L : result;
    System.out.println(result);
    }

  8. Isaac
    abril 3, 2013 #

    Amigo muchas gracias, lo busque en varios libros pero solo me enredaban con sus definiciones, pero tu me lo explicaste en unas cuantas palabras, de antemano gracias y que Dios te bendiga.

  9. Pablo Godoy
    abril 3, 2013 #

    MIKI90, yo inicialicé en null un “Long” y no un “long”.
    Internamente el operador ternario debe querer iniciar un long primitivo, y por eso da excepción, pero para mi debería contemplar esto para que no arroje esa excepción.
    Saludos!

  10. Pablo Godoy
    abril 3, 2013 #

    MIKI90, yo inicialicé en null un “Long” y no un “long”.
    Internamente el operador ternario debe querer inicializar en null un long primitivo, y por eso da excepción, pero para mi debería contemplar esto para que no arroje esa excepción.
    Saludos!

1 2

Deja un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*