Java - problema charAt

 
Vista:

problema charAt

Publicado por freilind (7 intervenciones) el 30/03/2008 00:06:17
hola estoy haciendo un programa que tiene como entrada por consola un string, este string lo tengo que descomponer en caracteres para luego ir uno a uno comparandolo para que tenga como salida el codigo morse.

asi es como estoy comparandolo todos los caracteres del string

// texto es el string de entrada

if(texto.charAt(0)=='a')
salidaMorse += " .-"; //este texto.charAt(0) lo comparo con todos los posibles letras y numeros y caracteres del codigo morse.

y hago lo mismo para el segundo caracter y todos los que les siguen...

y al final cuando muestre por pantalla (salidaMorse( deberia imprimir todos los puntos y rayas (.-) que le fui concatenando al string salidaMorse

pero me sale lo siguiente:

exception in tread "main" java.lang.StringIndexOutOfBoundsException: string index out of range: #
at java.lang.String.charAt(string.java:687)
at Proyecto.main(Proyecto.java:182)

Proyecto es el nombre que tiene el archivo.
donde sale # me aparece la cantidad de letras q tiene el string.

gracias al que me pueda ayudar....
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

RE:problema charAt

Publicado por ideasjava (83 intervenciones) el 30/03/2008 04:11:07
Hola. Intenté armar el codigo que dices que da error

Tu problema es que estas tomando un caracter mas del que tiene la cadena. Fijate en este codigo que escribi

String cadena = "asdfasdfasdfasdfasdfasdfasdf";
String salidaMorse = "";
for(int i=0;i<cadena.length();i++){
if(cadena.charAt(i)=='a'){
salidaMorse += " .-";
}
}

si te fijas en el for, hago que el ciclo vaya hasta un valor antes del que retorna cadena.length(), es decir si la cadena tiene 10 caracteres, el ciclo va desde 0 a 9

Cualquier duda pregunta.
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

RE:problema charAt

Publicado por freilind (7 intervenciones) el 30/03/2008 15:01:21
si pero el problema es que no puedo usar ciclos lo tengo que hacer solo con condicionales y selección....

y estoy comparando desde el 0 hasta el 19 porque la cadena solo puede contener 20 caracteres, y esto teoricamente deberia hacer lo mismo que el for...

o es que lo tengo que hacer hasta el 18 en vez del 19?

gracias por tu ayuda....
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

RE:problema charAt

Publicado por freilind (7 intervenciones) el 30/03/2008 15:06:57
otra cosa que me acabo de dar cuenta es que si introduzco los 20 caracteres no me da error y hace la conversion perfectamente, el problema esta es cuando introduzco menos de 20 caracteres....

gracias
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

RE:problema charAt

Publicado por ideasjava (83 intervenciones) el 30/03/2008 17:12:48
No me imagino como estas haciendo tu implementacion de este problema sin utilizar ciclos, estas utilizando entonces demasiados if. Si quieres puedes enviar el codigo que estas desarrollando al correo y lo vemos y te ayudamos. Sino pudes publicar aqui
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

RE:problema charAt

Publicado por ucevista (1 intervención) el 13/04/2008 19:45:30
ya se de donde viene eso; jaja... yo al igual que tu estoy en lo mismo y se me ocurio lo mismo despues de un par de dias pensandolo porque no me salia bien. has esto( ya debes de averlo hecho ) debes hacer que tu codigo cuente la posicionnes con un length al string que estas lellendo y que le añada los espacios que fanten hasta que tenga 20 ( te dejare eso a ti piensalo es facil ) yo a lo hice fue lo que se me ocurrio y despues debes hacer las validaciones para el "CH" si tu me entiendes ( te lo dejare a ti tambien ) el mio solo valida un CH en cuanquier lugar si le pogo algo como chchchchch solo traduce el primer ch y los demas los traduce como c y h pero no creo que los prepas se pongan Esquicitos con eso. yo estoy ahora con la parte del codigo a morse que se me a hecho dificil pensar en algo, te recomiendo ver las aclaratorias 2 del proy. bye y suerte!
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

RE:problema charAt

Publicado por freilind (7 intervenciones) el 13/04/2008 23:01:52
jajajajaja....me cachaste... pero ya lo solucione el problema validando antes de comparar cada caracter de la cadena si esa posicion existia en el string y listo corre al pelo, con las ch te voy a dar el dato para no ser mesquino: cuando consigas una c pregunta si el siguiente caracter es una h y si se cumple imprimes ch sino imprimes solo h..y cuando consigas una h pregunta si el anterior es una c si es verdad no haces nada sino imprimes h....y con la parte de morse a texto te digo que sale con substring pero esta parte piensalo tu.... suerte...
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