elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Valor booleano como String ? (solucionado)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Valor booleano como String ? (solucionado)  (Leído 7,430 veces)
Finishim

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Valor booleano como String ? (solucionado)
« en: 25 Abril 2015, 18:15 pm »

Hola a toda la comunidad, soy nuevo por acá y estoy recién iniciandome en lo que es programación en java (orientada a objetos), estoy comenzando con el IDE "Blue J" ya que en clases estamos aprendiendo el paradigma orientado a objetos.

Tengo un problemita con un ejercicio, espero que me puedan orientar a alguna posible solución. El ejercicio consta en pedir datos a un cliente, el nombre y el tipo de cliente (premium o normal), para esto en la clase Cliente asigne una variable de tipo booleana para el tipo de cliente, o sea si tipoCliente = true (cliente premium) si es false (cliente normal) y al final debe imprimir el nombre ingresado y el tipo de cliente

Primero pido el nombre por consola a través del metodo main, ingreso el nombre sin problemas, luego pregunto ("El cliente es premium ? S/N") "s" si es premium y "n" si no lo es, y aqui viene el problema, al momento de mostrar los datos, este dice :

nombre: Juanito Perez   ---> sin problemas
tipo: true o flase  (segun la letra ingresada)

al mostrar el tipo, este dice true o false, pero yo quiero que diga lietralmente:

 tipo: premium o normal (según la letra ingresada), que debo hacer aquí? una transformación de boolean a string ?? agradecería cualquier ayudita. gracias de antemano

aqui dejo el codigo con las 2 clases:

http://www.hastebin.com/qimamazufo.avrasm  --> clase GUI(interfaz) con el metodo main

http://www.hastebin.com/ibenakepeq.axapta  --> clase cliente

pd: usé hastebin ya que pastebin me borra el codigo al instante, no se el por que.


« Última modificación: 26 Abril 2015, 08:16 am por Finishim » En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Valor booleano como String ?
« Respuesta #1 en: 25 Abril 2015, 18:33 pm »

Simplemente al mostrar el valor premium coloca una condición:

Código
  1. System.out.println("Tipo: "+((tipo) ? "Premium" : "Normal"));

Si tipo es true se ejecuta el primer bloque, si es false, el segundo.


En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
Finishim

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Valor booleano como String ?
« Respuesta #2 en: 25 Abril 2015, 18:44 pm »

Simplemente al mostrar el valor premium coloca una condición:

Código
  1. System.out.println("Tipo: "+((tipo) ? "Premium" : "Normal"));

Si tipo es true se ejecuta el primer bloque, si es false, el segundo.

gracias por responder, pero no entiendo lo que me quieres decir :(

dices que debo poner una condición al mostrar el mensaje ? es decir  dentro del System.out.println() ??  no entiendo

sl2
En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Valor booleano como String ?
« Respuesta #3 en: 25 Abril 2015, 18:48 pm »

Dado que el campo tipo del objeto es boolean, entonces, ¿cómo piensas mostrar Premium o Normal? Es por ésto que debes hacer la condición. No hay ninguna forma de convertir un boolean a String.

Ésto:

Código
  1. (tipo) ? "Premium" : "Normal"

Debes de colocarlo en donde vas a mostrar el tipo (Premium o Normal), ya sea en una impresión por consola, o en un JTable, en un JList, o donde vayas a mostrar ese dato.

En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
Finishim

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Valor booleano como String ?
« Respuesta #4 en: 25 Abril 2015, 19:25 pm »

Dado que el campo tipo del objeto es boolean, entonces, ¿cómo piensas mostrar Premium o Normal? Es por ésto que debes hacer la condición. No hay ninguna forma de convertir un boolean a String.

Ésto:

Código
  1. (tipo) ? "Premium" : "Normal"

Debes de colocarlo en donde vas a mostrar el tipo (Premium o Normal), ya sea en una impresión por consola, o en un JTable, en un JList, o donde vayas a mostrar ese dato.



te agradezco nuavemente por responder, pero no logro entender que es lo que debo condicionar y como, se pueden hacer condiciones dentro de un system.out ??

se me ocurre algo asi como :
Código:
System.out.println( if(cltNuevo.setTipoCliente == true)"premium" : "normal" );    

no se bro, no logro entender, mejor iré a estudiar antes de plasmar preguntas

gracias de todos modos, saludos
En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Valor booleano como String ?
« Respuesta #5 en: 25 Abril 2015, 19:29 pm »

Eso se llama operador ternario. Es como un if, pero compacto y sin la palabra clave if.

es lo mismo que hicieras:

Código
  1. if(tipo) {
  2.    System.out.println("Tipo: Premium");
  3. } else {
  4.    System.out.println("Tipo: Normal");
  5. }

Con el operador ternario:

Código
  1. System.out.println("Tipo: "+((tipo) ? "Premium" : "Normal"));


Saludos.
En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
Thryks

Desconectado Desconectado

Mensajes: 112



Ver Perfil
Re: Valor booleano como String ?
« Respuesta #6 en: 25 Abril 2015, 19:42 pm »

La verdad es que me ha impresionado la respuesta de Gus, yo soy bastante novato en esto de la programacion pero decidi hacer el ejercicio por mi cuenta haber como me salía, pensé en esto. Quisiera saber si lo ves bien o esta mal Gus, me gustaría tu opinion:
Código:
import java.util.Scanner;
public class HolaBro{
    public static void main(String[] args){
//Declaramos las variables de entorno

Scanner metodoentrada = new Scanner(System.in); //Escaner
String nombre;//Variable que almacenará el nombre
char crf;    //Variable char que recogera la entrada por teclado de la 's' o la 'n'


System.out.println("Bienvenido ,introduce el nombre");
nombre = metodoentrada.nextLine();

System.out.println("Este es el nombre" + nombre);//Comprobamos que el nombre se ha introducido correctamente
System.out.println("Eres premiun? S/N");

crf = metodoentrada.next().charAt(0);
System.out.println("Este es el resultado de si eres premiun?" + crf);

if (crf == 's'){
System.out.println("Eres premiun");
}
else if (crf == 'n'){
System.out.println("Eres un usuario normal");
}
else {
System.out.println("No has seleccionado un valor correcto");
}

}
}
PD: Lo he modificado para que se entienda mejor
« Última modificación: 25 Abril 2015, 19:46 pm por Thryks » En línea

Futuro Sysadmin
PabloPbl

Desconectado Desconectado

Mensajes: 188


Ver Perfil
Re: Valor booleano como String ?
« Respuesta #7 en: 25 Abril 2015, 20:17 pm »

Acá tenes un pequeño ejemplo usando el operador ternario:

Código
  1. import java.util.Scanner;
  2.  
  3. public class BooleanoComoString {
  4.  
  5.    public static void main(String[] args) {
  6.        Scanner scanner = new Scanner(System.in);
  7.  
  8.        System.out.println("Cual es tu nombre");
  9.        String clientName = scanner.nextLine();
  10.  
  11.        System.out.println("¿Eres premium? s/n");
  12.        char premium = scanner.nextLine().charAt(0);
  13.  
  14.        String isPremium = (premium == 's')? "es Premium" : "no es premium";
  15.  
  16.        System.out.println("El cliente se llama "+clientName+" y "+isPremium);
  17.    }
  18. }
  19.  
En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Valor booleano como String ?
« Respuesta #8 en: 25 Abril 2015, 20:25 pm »

Tu código es correcto Thryks.

Si estuvieran aplicando POO, ésto se haría más sencillo:

Código
  1. public class User {
  2. private String name;
  3. private Character type;
  4.  
  5. public User() {
  6.  
  7. }
  8. public User(String name, Character type) {
  9. this.name = name;
  10. this.type = type;
  11. }
  12. public String getName() {
  13. return name;
  14. }
  15. public void setName(String name) {
  16. this.name = name;
  17. }
  18. public Character getType() {
  19. return type;
  20. }
  21. public void setType(Character type) {
  22. this.type = type.toLowerCase();
  23. }
  24. @Override
  25. public String toString() {
  26. return "Nombre: "+name+"\nTipo: "+(type == 'p') ? "Premium" : "Normal";
  27. }
  28. }

Código
  1. Scanner reader = new Scanner(System.in);
  2. User user = new User();
  3. System.out.print("Ingrese su nombre: ");
  4. user.setName(reader.nextLine());
  5. System.out.print("\nTipo de usuario (P/Premium - N/Normal): ");
  6. user.setPremium(reader.next().charAt(0););
  7. // mostrar la info del usuario
  8. System.out.println("\nInfo del usuario:"+user); // llamada automática a toString()


Saludos.
En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
PabloPbl

Desconectado Desconectado

Mensajes: 188


Ver Perfil
Re: Valor booleano como String ?
« Respuesta #9 en: 25 Abril 2015, 20:43 pm »

Aún se puede hacer en menos lineas el code que te pase. Ademas de ser menos lineas que el anterior, este se fija si el usuario ha ingresado un valor que no corresponde.

Código
  1. import java.util.Scanner;
  2.  
  3. public class BooleanoComoString {
  4.  
  5.    public static void main(String[] args) {
  6.        Scanner scanner = new Scanner(System.in);
  7.  
  8.        System.out.println("Cual es tu nombre");
  9.        String clientName = scanner.nextLine();
  10.  
  11.        System.out.println("¿Eres premium? s/n");
  12.        char premium = scanner.nextLine().charAt(0);
  13.  
  14.        System.out.println("El cliente se llama "+clientName+" y "+((premium != 's' && premium != 'n')?"no se puede saber si es premium":((premium == 's')?"es premium":"no es premium")));
  15.    }
  16. }
  17.  

Pero no te recomiendo usar este operador de esta manera, ya que es imposible entender el code a simple vista, solo es para casos sencillos y específicos.

Un saludo.
« Última modificación: 25 Abril 2015, 21:01 pm por PabloPbl » En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines