Pregunta

Atrapado en la escritura de la palabra ocurrencia de una cadena. Tengo un poco de punta (en las notas de tareas) a utilizar es compareToIgnoreCase. así que he intentado algo como esto:

splitwords = StringCont.split("\\s");
for(int i=0; i<splitwords.length; i++)
{
    if(splitwords[1].compareToIgnoreCase(splitwords[i]) == 0)
        splitcount++;
}

Por supuesto, es justo lo que puedo hacer y probablemente mal camino. Cuando ejecuto el código, consigo a veces fuera de la matriz de excepcion y, a veces se ejecuta. Lo que falta es: ir a través de todas las palabras y comprobar ellos y omitir las palabras que ya fueron contadas. Seré feliz para obtener ayuda con esta manera puede moverse a lo largo y entender cómo puede ser codificado. Gracias:)

Edit: Parece que no explico el problema con claridad suficiente, pero me da buena respuesta sobre el objeto de mapa que fácilmente se armó lo que necesitaba. No sabía sobre el mapa. Así que sí, yo estaba tratando de encontrar el número de veces que cada palabra dada se encuentra en la cadena.

tangens:. Que debe significar-tome la primera palabra (donde primero espacio en blanco es) splitwords [1] y compararlo con el resto de palabras splitwords cadena [i] y si es 0 (igual), entonces el recuento ++

Esko: de hecho hay espacios en blanco, como en la frase. Pero todavía tengo esta excepcion. No sé por qué a través.

¿Fue útil?

Solución

Almacenar las palabras y su población en un Map .

String[] words = string.toLowerCase().split("\\s+");
Map<String, Integer> wordCounts = new HashMap<String, Integer>();

for (String word : words) {
    Integer count = wordCounts.get(word);
    if (count == null) {
        count = 0;
    }
    wordCounts.put(word, count + 1);
}

Tenga en cuenta que he llamado antes toLowerCase() split() como usted parece querer tener mayúsculas y minúsculas.

Otros consejos

¿Está buscando la aparición de un seguro palabra en la oración o la cuenta de la palabra acumulada de las todas las palabras frase? Sobre la base de su código de ejemplo que cabe esperar la primera, pero su explicación me hace pensar en esta última.

En cualquier caso, algo obvio: Si no hay espacios en blanco en la cadena de entrada, String#split() devuelve una matriz que contiene exactamente un elemento - la propia cadena original. Dado que los índices de matriz comienzan desde cero, que es la causa del splitwords[1] ArrayIndexOutOfBoundsException porque la única cadena es disponible en el índice [0].

Puede utilizar un conjunto y almacenar cada palabra dentro y al final conseguir el tamaño del conjunto.

Usted recibirá el número de diferentes palabras no número de palabra , por supuesto.

Si desea contar ocurrencia palabra, se debe utilizar un HashMap<String, Integer>. Allí se puede almacenar un contador para cada palabra que se encuentra.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top