Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con una variable

Estas en el tema de Problema con una variable en el foro de Java en Foros del Web. Buenos días, he de hacer un programita que conteste S(Si) o N(No) a una pregunta, declarando una variable booleana funciona, pero contestando true o false. ...
  #1 (permalink)  
Antiguo 05/11/2012, 01:13
Avatar de Pike  
Fecha de Ingreso: agosto-2008
Ubicación: Por ahí
Mensajes: 251
Antigüedad: 15 años, 8 meses
Puntos: 1
Problema con una variable

Buenos días, he de hacer un programita que conteste S(Si) o N(No) a una pregunta, declarando una variable booleana funciona, pero contestando true o false.
if (Alergico == true){
System.out.println("Se debe tomar una medicina alternativa");
}else{
System.out.println("No es alérgico a ningún medicamento");
}
Lo que quiero es sustituirlo por S o N, he intentado declarando una variable:
char alergico='S'; y el código no me da error pero cuando lo ejecuto no funciona.¿Alguien podría orientarme?

Un saludo a todos.
  #2 (permalink)  
Antiguo 05/11/2012, 01:54
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Problema con una variable

¿Cómo estás haciendo la comparación con ese char?

if alergico == 'S' debería funcionar.
  #3 (permalink)  
Antiguo 05/11/2012, 03:01
Avatar de Pike  
Fecha de Ingreso: agosto-2008
Ubicación: Por ahí
Mensajes: 251
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Problema con una variable

char Alergico = 'S';
if (Alergico == 'S'){
System.out.println("Se debe tomar una medicina alternativa");
}else{
System.out.println("No es alérgico a ningún medicamento");
}
Y también de esta manera
char Alergico = 'S';
char NoAlergico = 'N';
if (Alergico == 'S'){
System.out.println("Se debe tomar una medicina alternativa");
}else if (NoAlergico == 'N'){
System.out.println("No es alérgico a ningún medicamento");
}
El script no me da errores pero cuando lo ejecuto si.

Un saludo
  #4 (permalink)  
Antiguo 05/11/2012, 03:05
 
Fecha de Ingreso: noviembre-2012
Mensajes: 5
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Problema con una variable

Cita:
Iniciado por Pike Ver Mensaje
Buenos días, he de hacer un programita que conteste S(Si) o N(No) a una pregunta, declarando una variable booleana funciona, pero contestando true o false.
if (Alergico == true){
System.out.println("Se debe tomar una medicina alternativa");
}else{
System.out.println("No es alérgico a ningún medicamento");
}
Lo que quiero es sustituirlo por S o N, he intentado declarando una variable:
char alergico='S'; y el código no me da error pero cuando lo ejecuto no funciona.¿Alguien podría orientarme?

Un saludo a todos.

Buenos días. ¿Lo estás haciendo en Java supongo, verdad? Si es así, personalmente no he utilizado aún variables de tipo CHAR.
Utilizo las variables de tipo "String", que permite cadenas de caracteres. si puedes permitirte utilizar este tipo para la variable sería algo así, aunque se puede plantear de otras formas.

String r="";

System.out.println("¿Es alergico? (S / N)");
r=entrada.nextLine();
r=r.toUpperCase(); //Para pasar los caracteres a mayúsculas
if (r.equals("S")){
System.out.println("Tiene que tomarse la medicación");
}else{
if (r.equals("N")){
System.out.println("No es alérgico. No necesita medicación");
}else{
System.out.println("Ha introducido un carácter incorrecto");
}
}

Si puedes hacerlo de esta forma perfecto, aunque te aconsejo que antes de presentar este ejercicio, te asegures de que lo entiendes a la perfección y de que habéis dado todo, en caso contrario, olvídate de este mensaje porque puede darte problemas.
  #5 (permalink)  
Antiguo 05/11/2012, 03:53
Avatar de Pike  
Fecha de Ingreso: agosto-2008
Ubicación: Por ahí
Mensajes: 251
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Problema con una variable

Muchas gracias por tu respuesta, no conocía r.equals - estoy en java preescolar -, y entiendo la estructura, pero la variable entrada se ha de declarar antes ¿no?COMO SI FUERA:
String entrada = lector.nexString();
r=entrada.nextline;

Con esta sintaxis no me funciona y con la que propones tampoco.

Un saludo
  #6 (permalink)  
Antiguo 05/11/2012, 04:09
 
Fecha de Ingreso: noviembre-2012
Mensajes: 5
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Problema con una variable

Bueno sí claro, perdona que se me ha pasado. Yo llevo sobre un mes con Java así que no se demasiado tampoco.

Tendrás que declararlo así:

Scanner entrada = new Scanner (System.in);

por lo que entrada es lo que pones cuando llamas a esta función para pedir un dato:

r = entrada.nextLine();

Además, supongo que si ya has pedido datos, habrás puesto la librería donde declaras el package:

import java.util.*;

No es complicado pero si te lias te copio todo el código ya que entiendes la estructura.

equals hace comparación de cadenas, siendo booleana (true o false). Si no le pones nada, entraría en el if cuando sea true aunque también podrás poner:

if (r.equals("s")==false){...}

Entraría cuando r NO valga "s".

Espero que te haya ayudado.
  #7 (permalink)  
Antiguo 05/11/2012, 04:16
Avatar de Pike  
Fecha de Ingreso: agosto-2008
Ubicación: Por ahí
Mensajes: 251
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Problema con una variable

Ok gracias por tu rápida respuesta, ahora no puedo probarlo porque me tengo que ir al curre, ya te diré algo.

Un saludo
  #8 (permalink)  
Antiguo 05/11/2012, 09:59
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Problema con una variable

Por cierto, eviten poner esto:

if (boolean == true) {} // if (boolean == false) {}

En vez de eso usad:

if (boolean) {} // if (!boolean) {}

Los tests de calidad os lo agradecerán :)
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:33.