Título: comparacion de un string con char en java Publicado por: sauce19 en 21 Agosto 2011, 00:31 am hola!!! m mandaron a realizar un programa usando los cuatro pilares de java, es realizar un menu con los requisitos para crearte un correo electronico, en un solo metodo tngo q pedir nombre,apellido,id,dominio,sexo,contraseña y q m confirmen la contraseña; pero tngo q mostrar todo eso en un solo vector, he hecho casi todo menos lo del sexo, xq m mandaron a contar el numero de usuarios femeninos y masculinos y m da error lo q he hecho para hacer la comparacion y contar, esto es lo q tngo:
Código
yo habia hecho la comparacion asi, para luego contarlos, el error me dic qq no puedo comparar un string con un char, y d verdad no entiendo como hacerlo: Código si m podrian aclarar la duda se los agradeceria muchisimo. gracias!!! Título: Re: comparacion de un string con char en java Publicado por: someRandomCode en 21 Agosto 2011, 01:06 am Mira, en si a mi se me ocurren soluciones complicadas como en vez de hacer un vector de Strings, hacer un vector de Objects, y que levantes segun el que sea el objeto que corresponda.
Pero eso es overkill y para otas situaciones. Podrias hacer en vez de eso un : Código: if (vec[4].equalsIgnoreCase("f")) fe++; vec[4] es un string con una representacion con chars, charAt selecciona el caracter en la posicion empezando a contar desde cero, eso te retorna un char, y si los podrias comparar. Fijate que por las dudas que el tipo haya puesto una F mayuscula, puse el OR ese ahi en el if. Alternativamente podrias llevar vec[4] todo a mayusculas (.toUpper()) o todo a minusculas (toLower()) y comparar una sola vez. Espero que te haya servido, si necesitas mas explicacion preguntame pero esto es bastante simple.[/code] Título: Re: comparacion de un string con char en java Publicado por: sauce19 en 22 Agosto 2011, 03:33 am ok muchas gracias por aclarar mi duda somerandomcode. Oye, tngo otra, apenas stoy comenzando a programar en java y quisiera preguntar como hago para mostrar en pantalla lo siguiente, q lo tngo almacenado todo en un vector (es del mismo programa q mencione antes): nombre,apellido,id,dominio,sexo,clave y confirmacion de la clave. yo escribi un metodo para c/u y los tngo asi: el nombre en un vec[0], el apellido en un vec[1], el id en un vec[2],el dominio en un vec[3],el sexo en un vec[4],la clave en un vec[5] y la confirmacion de la clave en un vec[6]; como muestro ese vector en pantalla??? lo intente con un stringformat pero m da error, si m podrias aclarar de nuevo la duda t lo agradeceria mucho, gracias!!
Título: Re: comparacion de un string con char en java Publicado por: someRandomCode en 22 Agosto 2011, 03:47 am A ver si te entiendo...
Vos lo que queres es que por pantalla aparezca algo como Código: vec[0] = nombre Código: public void mostrarVector(String Vector[]) { Aca te dejo una muestra con main y todo: Código: public class Main { Esta hecho a las apuradas, pero funciona bien. Título: Re: comparacion de un string con char en java Publicado por: Gallu en 22 Agosto 2011, 15:00 pm Por costumbre es siempre mejor aplicar el operador de comparación sobre la constante ejm.
Código
en lugar de Código
de esta manera si vec[4] es nulo , no tendrás ningún problema.(NullPointer...) Saludos. Título: Re: comparacion de un string con char en java Publicado por: someRandomCode en 22 Agosto 2011, 22:02 pm Igualmente si el objeto no esta inicializado, van a haber problemas, independientemente de que lado encares la comprobacion, por ejemplo:
Código: public class Main { Escupe que hay un warning, pero cuando le das correr de todas maneras (o ignoras el warning en caso que invoques al compilador directamente), tenes esto en tiempo de ejecucion: Código: Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - variable vector might not have been initialized Moraleja: asegurarse de que los parametros lleguen como esperas que lleguen, y aprender a manejar excepciones, pero esto para un futuro, porque nuestro amigo aca esta empezando por lo que parece. Título: Re: comparacion de un string con char en java Publicado por: Gallu en 23 Agosto 2011, 14:46 pm Pues por eso mismo, desde el principio debe aprender buenos hábitos , con tu ejemplo a mi el copilador directamente no me genera el .class , si inicializo vector como null me da un NullPointerException por que accedemos a un índice inexistente, si inicializo vector a array de 10 pero no hago el new de sus elementos, entonces es cuando la comparación segura tiene sentido.
Código
Título: Re: comparacion de un string con char en java Publicado por: someRandomCode en 23 Agosto 2011, 14:51 pm Comparto, pero hay una cosa que te quiero preguntar, porque nunca vi hacer asi como practica recomendada, podrias citarme alguna fuente?
Ya que estamos, uno siempre aprende algo nuevo... Segun tenia entendido, en estos casos, la comparacion RTL o LTR (right to left o left to right) si uno de los dos da null, ya se tira la excepcion. Por cierto, tu codigo y el mio cambian en 2 numeros (6 a 10, y vec[1] por vec[0] ) donde el cambio realmente no es relevante, dado que podria bien ser, en cualquiera de los dos casos, que ambos sean (o no)nulos, o uno de los dos lo sea. O no entendí lo que quisiste decir con el ejemplo.. Título: Re: comparacion de un string con char en java Publicado por: Gallu en 23 Agosto 2011, 15:24 pm Comparto, pero hay una cosa que te quiero preguntar, porque nunca vi hacer asi como practica recomendada, podrias citarme alguna fuente? He buscado en internet y no he encontrado ninguna recomendación de este tipo , yo la uso por que es politica de mi empresa (desde que llevo con ella , 4 años), en proyectos de tamaño medio/grande , estos detalles son los que hacen la diferencia . Ya que estamos, uno siempre aprende algo nuevo... Segun tenia entendido, en estos casos, la comparacion RTL o LTR (right to left o left to right) si uno de los dos da null, ya se tira la excepcion. Con el método equals no sucede , no es lo mismo Código
que .. Código
En el segundo da NullPointerException, obvia el detalle de la inicialización explícita a null , te puedes encontrar con un null recuperando un objeto de session por ejemplo, o un parámetro que no se ha pasado al servlet , etc , etc. Por cierto, tu codigo y el mio cambian en 2 numeros (6 a 10, y vec[1] por vec[0] ) donde el cambio realmente no es relevante, dado que podria bien ser, en cualquiera de los dos casos, que ambos sean (o no)nulos, o uno de los dos lo sea. O no entendí lo que quisiste decir con el ejemplo.. los cambios en realidad no tienen importancia , son debido a que estaba trasteando con tu código . Por cierto he encontrado algún sitio donde se menciona este tema: http://isagoksu.com/2009/development/java/how-to-avoid-nullpointerexceptions-npe/ (http://isagoksu.com/2009/development/java/how-to-avoid-nullpointerexceptions-npe/) en esta página busca Citar 1. NPE on String y en esta .. http://en.wikibooks.org/wiki/Java_Programming/Preventing_NullPointerException (http://en.wikibooks.org/wiki/Java_Programming/Preventing_NullPointerException) esta también http://www.java-tips.org/java-se-tips/java.lang/a-small-tip-on-string-to-avoid-nullpointerexce.html (http://www.java-tips.org/java-se-tips/java.lang/a-small-tip-on-string-to-avoid-nullpointerexce.html) En fin , simplemente buscar NullPointerException prevent java y te saldrán algunas de ellas. Saludos. Título: Re: comparacion de un string con char en java Publicado por: someRandomCode en 23 Agosto 2011, 17:39 pm Jaja, si, es que no se, pense que me podias ahorrar la busqueda linkeandome a algun lado pertinente.
El comentario fue uno de esos que no se ven a menudo, que tienen implicaciones tecnicas importantes por mas simple que parezca, y por eso me llamo la atención.. De NotNull y Nullable sabia, lo vi en el SL-275.. Assert tambien esta en el manual, aunque se vio poco, los patrones vi algunos ademas del notado, como por ejemplo el patron singleton comprobado.. Estaba buscando mas que una explicacion de safar de los null (usualmente, siempre los controlo antes de que lleguen, y sino reniego un rato hasta encontrarlo) un manual de consejos practicos compiladitos para eso y otas areas.. Gracias por los enlaces, me pongo de paso a buscar tambien otros (ya capaz que esto vale para agregarlo en el tema que esta sticky de JAVA - ¿cuanta gente has visto que empieza y se pierde por NPE y cae a preguntar por el foro -y en el peor de los casos- sin siquiera querer mostrar codigo fuente?) |