Programación General > Java
problema con toLowerCase
el_funa:
hola tengo este problema de que no puedo ocupar bien el toLowerCase ya que no melos transforma a minuculas paraasi comparar
tengo que comparar unos colores pero el usuario puede colocar mayusculas y no funcionaria el prog. de todas maneras ahora estamos ocupando el blueJ
public void setColor(String color)
{
if(color.toLowerCase()=="blanco") // AQUI ESTA EL PROBLEMA
{
this.color=color;
}
entonces es ahi donde debe ir el toLowerCase ??o esta mal planteado el problema ?
aqui esta el codigo codigo completo.
--- Código: Java ---/** * Write a description of class Equipo here. * * @author (your name) * @version (a version number or a date) */public class Equipo{ private String marca; private String modelo; private String numeroSerie; private String descripcion; private String color; private Wifi wifi; private Llamada llamada; private Mensajeria mensajeria; private Reproductor reproductor; public Equipo() { marca=null; modelo=null; numeroSerie=null; descripcion=null; color=null; wifi=new Wifi(); llamada=new Llamada(); mensajeria=new Mensajeria(); reproductor=new Reproductor(); } public Equipo(String marca,String modelo,String numeroSerie,String descripcion,String color, Wifi wifi,Reproductor reproductor, Llamada llamada, Mensajeria mensajeria) { setMarca(marca); setModelo(modelo); setNumeroSerie(numeroSerie); setDescripcion(descripcion); setColor(color); this.wifi=wifi; this.llamada=llamada; this.mensajeria=mensajeria; this.reproductor=reproductor; } public String getMarca() { return marca; } public String getModelo() { return modelo; } public String getNumeroSerie() { return numeroSerie; } public String getDescripcion() { return descripcion; } public String getColor() { return color; } public void setMarca(String marca)//nokia, sony, lg, Samsung, blackBerry o iphone { if(marca.toLowerCase()=="nokia") { this.marca=marca; } else{ if(marca.toLowerCase()=="sony") { this.marca=marca; } else{ if(marca.toLowerCase()=="samsung") { this.marca=marca; } else{ if(marca.toLowerCase()=="blackberry") { this.marca=marca; } else{ if(marca.toLowerCase()=="lg") { this.marca=marca; } else{ if(marca.toLowerCase()=="iphone") { this.marca=marca; } else{ System.out.println("solamente estan estas marcas: nokia, sony, lg, Samsung, blackBerry o iphone"); }}}}}} } public void setModelo(String modelo) { if(modelo.length()==5) { this.modelo=modelo;}else{System.out.println("el numero de modelo debe ser igual a cinco (5)");} } public void setNumeroSerie(String numeroSerie) { if(numeroSerie.length()>=3) { this.numeroSerie=numeroSerie;}else{System.out.println("El numero de serie debe tener mas de tres (3) caracteres.");} } public void setDescripcion(String descripcion) { if(descripcion.length()>=3) { this.descripcion=descripcion;}else{System.out.println("La descripcion debe tener mas de tres (3) caracteres.");} } public void setColor(String color) { if(color.toLowerCase()=="blanco") // AQUI ESTA EL PROBLEMA { this.color=color; } else{ if(color.toLowerCase()=="negro") { this.color=color; } else{ if(color.toLowerCase()=="rosado") { this.color=color; } else{ if(color.toLowerCase()=="rojo") { this.color=color; } else{ if(color.toLowerCase()=="gris") { this.color=color; } else{ System.out.println("solamente estan estos colores blanco, negro , rosado, rojo o gris"); }}}}} } public void printEquipo() { System.out.println("La marca es:"+getMarca()); System.out.println("El modelo es:"+getModelo()); System.out.println("Numero de serie:"+getNumeroSerie()); System.out.println("Descripciones:"+getDescripcion()); System.out.println("El color es:"+getColor()); wifi.printWifi(); llamada.printLlamada(); mensajeria.printMensajeria(); reproductor.printReproductor(); }}
shadow_rev:
Hasta donde tengo conocimiento, java no compara los strings con los signos habituales de comparación, o sea, no funciona el ==. En su lugar, utiliza la función compareTo() o compareToIgnoreCase(), que es lo mismo pero ignorando mayúsculas o minúsculas:
--- Código: Java ---if(color.compareToIgnoreCase("blanco")==0) { this.color=color;}
:suerte:
posman:
Si puedes utilizar == para comparar cadenas, pero solamente cuando les asignas un valor literal
--- Código: Java ---String c1 = "hola";String c2 = "hola";if ( c1 == c2) System.out.println("Si son iguales");
El problema viene cuando les asignas el valor como objetos
--- Código: Java ---String d1, d2;d1 = "hola";d2 = new String("hola");if ( d1 == d2 ) System.out.println("Si son iguales");else System.out.println("No son iguales"); if ( d1.equals(d2) ) System.out.println("Si son iguales");else System.out.println("No son iguales");
el_funa:
--- Cita de: "shadow_rev" ---Hasta donde tengo conocimiento, java no compara los strings con los signos habituales de comparación, o sea, no funciona el ==. En su lugar, utiliza la función compareTo() o compareToIgnoreCase(), que es lo mismo pero ignorando mayúsculas o minúsculas:
--- Código: Java ---if(color.compareToIgnoreCase("blanco")==0) { this.color=color;}
:suerte:
--- Fin de la cita ---
gracias por la ayuda eso era lo que necesitaba :D
shadow_rev:
--- Cita de: "posman" ---Si puedes utilizar == para comparar cadenas, pero solamente cuando les asignas un valor literal
--- Código: Java ---String c1 = "hola";String c2 = "hola";if ( c1 == c2) System.out.println("Si son iguales");
El problema viene cuando les asignas el valor como objetos
--- Código: Java ---String d1, d2;d1 = "hola";d2 = new String("hola");if ( d1 == d2 ) System.out.println("Si son iguales");else System.out.println("No son iguales"); if ( d1.equals(d2) ) System.out.println("Si son iguales");else System.out.println("No son iguales");
--- Fin de la cita ---
Gracias por la aclaración; y ahora que lo pienso, por qué tengo esta rara sensación de dejavù... :think:
Navegación
[#] Página Siguiente
Ir a la versión completa