Java - metodo con un boolean de parametro y tres posibles retornos

   
Vista:

metodo con un boolean de parametro y tres posibles retornos

Publicado por Manuel (3 intervenciones) el 09/07/2016 15:18:04
Buenas:

En un grupo de amigos que nos aficiona la programación estamos con un pequeño problema de programación, pero no damos con la solución.
Tenemos que escribir un método que tiene como parámetro un boolean, y dependiendo de ese parámetro, retorno a, b o c.

Para dos retornos, a ó b, imagino que sería algo así

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class AcertijoBoolean {
 
    private  String a;
    private  String b;
    private  String c;
 
 
    public String retorno(boolean bol){
           if(bol){
                return a;
           }
           else {
                return b;
           }
 
          }
 
}

Pero como hago para que devuelva un tercer valor?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

metodo con un boolean de parametro y tres posibles retornos

Publicado por juanki (95 intervenciones) el 09/07/2016 18:23:57
Hola

Un booleano solo puede tener dos valores: TRUE o FALSE, por lo que no sé de dónde vas a sacar el tercero. Lo que sí puedes hacer es pasarle un int en vez del booleano, así podrás tener todas los posibles valores que quieras.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

metodo con un boolean de parametro y tres posibles retornos

Publicado por Manuel (3 intervenciones) el 09/07/2016 19:39:20
Juanki, esa es el tema, que por lo visto, si es posible.
Yo había pensado en ponerle un try/catch al if, ý en el catch poner que si hay excepción porque el boolean es nulo, que retorne el tercer valor, pero no sé si eso es muy ortodoxo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

metodo con un boolean de parametro y tres posibles retornos

Publicado por juanki (95 intervenciones) el 09/07/2016 21:15:16
Hola

Pues hasta donde sé, en java los tipos primitivos, como los booleanos, no pueden ser null. Por lo tanto no puedes hacer if(bol == null)...

Acabo de probar un pequeño ejemplo y he declarado un boolean sin inicializar y me da error de que no está inicializada.

Sigo viendo como una sencilla alternativa el uso de int.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

metodo con un boolean de parametro y tres posibles retornos

Publicado por Thanatos (69 intervenciones) el 10/07/2016 10:05:43
Se podría hacer utilizando un objeto de tipo Boolean.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class AcertijoBoolean {
    private static Boolean bol;
 
    public static void main(String[] args) {
        System.out.println(retorno(bol));
 
        bol = true;
        System.out.println(retorno(bol));
 
        bol = false;
        System.out.println(retorno(bol));
    }
 
    private static String retorno(Boolean bol) {
        if (bol == null) {
            return "a";
        } else if (bol) {
            return "b";
        } else {
            return "c";
        }
    }
}

Aunque el código funciona, no es una manera correcta de utilizar el tipo Boolean porque, como indicó juanki, sólo deben considerarse true y false como sus valores posibles.

En este caso se declaró un objeto sin crear su instacia (utilizando new) y sin inicializarlo (mediante la llamada al constructor), debido a eso no se le asignó una posición en la memoria y apunta a null. Esto es lo que permite que el código anterior funcione.

Otra manera de escribir el método:

1
2
3
private static String retorno(Boolean bol) {
    return bol == null? "a" : bol? "b" : "c";
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

metodo con un boolean de parametro y tres posibles retornos

Publicado por Manuel (3 intervenciones) el 10/07/2016 13:54:40
Gracias juanki y Thanatos.
Como ya os comenté, es más una cosa en plan calentarse la cabeza que algo para aplicar. Ya ´se que hay mejores opciones que un boolean para el caso que os presenté.
Como ya puse, en efecto Thanatos, yo lo puse por medio de un try-catch, pero tu solución parece algo más limpia.
Muchas gracias a ambos, creo que es lo que buscaba.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar