Java - "Posiciones de palabras"

   
Vista:

"Posiciones de palabras"

Publicado por Weiba (1 intervención) el 12/02/2016 15:17:42
Buenas a todos, estoy llevando a cabo un ejercicio en Java en el que se le pasa un texto y te devuelve un HashMap con la palabra y el ArrayList<Integer> con las posiciones en las que se encuentra dicha palabra en el texto.

El problema viene cuando lo ejecuto, no me sale en el array todas las posiciones de esa palabra si no solo la última posición de ella y no veo donde está el problema. Os dejo el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public boolean esLetraNumero (char letra){
	//Comprobar si el carácter es una letra o número
	int asci = (int)letra;
	if ((asci >= 97 && asci <= 122)
	|| (asci >= 65 && asci <= 90)
	|| (asci >= 48 && asci <= 57)){
		return true;
	}
	return false;
}
 
public HashMap <String, ArrayList<Integer>> generaDiccionario (String texto){
	HashMap <String, ArrayList<Integer>>palabras= new HashMap <String, ArrayList<Integer>>();
	String palabra ="";
 
	for (int i=0; i < texto.length() ; i++){
		if (esLetraNumero(texto.charAt(i))){//Comprobar si el carácter escrito es una letra o número y lo añadimos a palabra
			palabra +=texto.charAt(i);
		}
 
		else{
 
			if (palabra != ""){	//Cuando acaba la palabra de formarse, creo el ArrayList que contiene las posiciones
				ArrayList<Integer> pos = new  ArrayList<Integer>();
				pos.add(i-palabra.length());
				palabras.put(palabra,pos);
				palabra ="";
			}
		}
 
	}
 
	if (palabra != ""){//Creo el ArrayList de la última palabra
		ArrayList<Integer> pos = new  ArrayList<Integer>();
		pos.add(texto.indexOf(palabra));
		palabras.put(palabra, pos);
 
	}
 
	return palabras;
}


Escribo esto: String texto= "en en ee e, en y un een"; System.out.println(ejercicios.generaDiccionario(texto));
Y me devuelve esto: {ee=[6], e=[9], en=[12], y=[15], un=[17], een=[20]}


Gracias de antemano.
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