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

Buscar caracteres en un array de char

Estas en el tema de Buscar caracteres en un array de char en el foro de Java en Foros del Web. Hola. A ver soy bastante nuevo en programación y java, estoy empezando el curso de desarrollo de aplicaciones web y hay un ejercicio de Java ...
  #1 (permalink)  
Antiguo 16/01/2015, 06:45
Avatar de jotabono  
Fecha de Ingreso: enero-2015
Mensajes: 2
Antigüedad: 9 años, 4 meses
Puntos: 0
Buscar caracteres en un array de char

Hola. A ver soy bastante nuevo en programación y java, estoy empezando el curso de desarrollo de aplicaciones web y hay un ejercicio de Java que me tiene loquísimo, y es que me piden que ingrese por teclado una frase, que esa frase se convierta en un array de chars (es decir, se guarde caracter por caracter) y seguidamente ingrese una palabra o letra y el programa me diga si el array de chars contiene esa palabra o letra.

De momento lo tengo así:

String p = "";
String buscador = "";
int i = 0;

System.out.println("Introduce una frase: ");
p = in.readLine();

char [] pChar = p.toCharArray();

System.out.println("Buscar");
buscador = in.readLine();

char [] buscadorChar = buscador.toCharArray();

while(i < buscadorChar.length){
i++;
if (pChar[i] == buscadorChar[i]){
System.out.println("");
System.out.println("Se ha encontrado '" + buscador + "' en la frase.");
break;
}

}

El problema es que por ejemplo, si en la primera frase introduzco "Hola que tal", y luego busco "hola" o "tal" me lo encuentra. Pero si introduzco "que" me salta error. También me salta error si por ejemplo busco "ola" o una simple "a", y debería decirme que están en la frase, porque lo están.

Se que puede ser un código muy de novato pero he probado de todo y no se me ocurre nada más.

A ver si me podéis echar un cable
  #2 (permalink)  
Antiguo 16/01/2015, 07:15
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Buscar caracteres en un array de char

Cita:
while(i < buscadorChar.length){
i++;
if (pChar[i] == buscadorChar[i]){
System.out.println("");
System.out.println("Se ha encontrado '" + buscador + "' en la frase.");
break;
}
Dos cosas mal.

La primera y que te produce error, la primera posición de un array es cero, tú estás empezando en 1 por el i++, así que si tiene 8 letras la última sería [7] y tú buscas en [8]. Eso da error y te lo dice.

La segunda cosa que tienes mal es pChar[i] == buscadorChar[i], con eso lo único que haces es es ver que la primera palabra empiece por la segunda.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 16/01/2015, 07:26
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 9 meses
Puntos: 182
Respuesta: Buscar caracteres en un array de char

Buenas,

Realmente no te esta buscando nada. Estas comparando caracter a caracter la cadena original con la cadena de busqueda. Si un caracter coincide, ya estas considerando que has encontrado la palabra.

En el caso de "hola" y"tal" te devuelve Ok porque:
-"hola"[1] == "hola"[1]
-""hola"[2] == "tal"[2] (coincide que en los dos casos la tercela letra es una "l")

Si embargo si las letras de la cadena buscada no coinciden en la misma posicion no te encontrara nada y te dara un outofboundexception porque intentas acceder a un indice del array de busqueda que no esta inicializado.

El algoritmo tiene que ser:

-Buscar en el array la primera letra que coincida con la primera letra del array de busqueda
-Una vez encontrada, hacer un segundo bucle que recorra el numero de letras del array de busqueda y que compruebe que todas coincidan.


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #4 (permalink)  
Antiguo 16/01/2015, 10:50
Avatar de jotabono  
Fecha de Ingreso: enero-2015
Mensajes: 2
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Buscar caracteres en un array de char

Buenas, me he guiado un poco en lo que me habéis dicho, llevo horas, pero no hay manera de sacarlo...

De momento tengo así el código:



Etiquetas: caracteres, char, programa, string
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 06:43.