Contar numero de silabas numa String

Basicamente o que eu preciso que o programa faca:

  • Leia o numero de sentencas
    O fim de sentencas serao sempre quando ocorrerem ponto, exclamacao ou interrogacao seguidos de espaco em branco

  • Leia o numero de palavras
    Palavras sao delimitadas por espacos em brancos

  • Leia o numero de silabas
    Uma silaba contem pelo menos uma vogal, seguida de uma consoante.
    ‘e’ no final de uma palavra nao conta como silaba
    ex:
    rain - one syllable
    abbreviation - 4 (not 5 as it really should be) syllables.
    graduation - 3 (not 4) syllables.
    queue - 1 syllable.

O que eu ja fiz: contar numero de sentencas e palavras.
Falta ainda ler as silabas, ta fogo
Como da pra ver, usando o metodo de uma vogal seguido de consoante as vezes da o numero errado de silabas, mas pra o proposito do trabalho nao vai ter problema.

O meu codigo:
http://pastebin.com/m341f44b5
a parte de contar silabas eh que esta defeituosa.

obs: java.txt pode ser qualquer texto que voce gerar.

RESUMO:
Como contar numa String o numero de vezes de uma vogal no fim da String ou de uma vogal seguido de uma consoante.

[quote=josas]Basicamente o que eu preciso que o programa faca:

  • Leia o numero de sentencas
    O fim de sentencas serao sempre quando ocorrerem ponto, exclamacao ou interrogacao seguidos de espaco em branco

  • Leia o numero de palavras
    Palavras sao delimitadas por espacos em brancos

  • Leia o numero de silabas
    Uma silaba contem pelo menos uma vogal, seguida de uma consoante.
    ‘e’ no final de uma palavra nao conta como silaba
    ex:
    rain - one syllable
    abbreviation - 4 (not 5 as it really should be) syllables.
    graduation - 3 (not 4) syllables.
    queue - 1 syllable.

O que eu ja fiz: contar numero de sentencas e palavras.
Falta ainda ler as silabas, ta fogo
Como da pra ver, usando o metodo de uma vogal seguido de consoante as vezes da o numero errado de silabas, mas pra o proposito do trabalho nao vai ter problema.

O meu codigo:
http://pastebin.com/m341f44b5
a parte de contar silabas eh que esta defeituosa.

obs: java.txt pode ser qualquer texto que voce gerar.

RESUMO:
Como contar numa String o numero de vezes de uma vogal no fim da String ou de uma vogal seguido de uma consoante.[/quote]

Coloca o código aqui. Não acho legal sair clicando links de terceiros por ai.

A definição de sílabas não é tão simples assim não. Pior, ainda tem coisas como “ch”, “lh”, “rr”, “ss”. Você precisa fazer um programa que faça isso corretamente com base no idioma ou simplesmente pegar pares (ou trios, como em “carranca”, que seria “car”-“ran”-“ca”)?

[quote=Ssalgado]
Coloca o código aqui. Não acho legal sair clicando links de terceiros por ai.[/quote]

Opa, desculpa por isso. Algumas pessoas acham mais facil olhar o codigo pelo pastebin, por isso tinha colocado o codigo la.

[code]import java.io.BufferedReader;
import java.io.FileReader;

public class ReadabilityScale {

public static void main(String[] args) {

	processFile("java.txt");

}

private static void processFile(String fileName) {
	String line = null;
	int wordsNumber = 0, sentencesNumber = 0, syllabusNumber = 0;

	System.out.println("Opening first file \"" + fileName + "\"");
	try {
		BufferedReader reader = new BufferedReader(new FileReader(fileName));
		System.out.println("Processing text...");
		while (reader.ready()) {
			line = reader.readLine();
			line = line.replaceAll("\s+", " ");
			System.out.println(line);
			String[] wordsArray = line.split(" ");

			// Counting number of sentences
			for (int i = 0; i < wordsArray.length; i++) {
				if (wordsArray[i].endsWith(".")	|| wordsArray[i].endsWith("!")	|| wordsArray[i].endsWith("?")) {
					sentencesNumber++;
				}
				
			//Counting number of syllabus
				if (wordsArray[i].matches("[aeiouy]*[bcdfghjlmnpqrstvxz]*")){
					syllabusNumber++;
				}
				
			}

			// Counting number of words
			if (!line.isEmpty()) {
				wordsNumber += wordsArray.length;
			}

		}
		reader.close();
		System.out.println("Report generated.\n");
		System.out.println("numero de palavras: " + wordsNumber	+ "\nnumero de sentencas: " + sentencesNumber	+ "\nnumero de silabas: " + syllabusNumber);
	}

	catch (Exception e) {
		System.out.println("Exception occurred");
	}
}

}[/code]

O programa vai ser apenas para palavras em ingles.