Duvidas com Vector

Boa tarde pessoal estou com um problema que não sei como resolver.

Tenho um programa para codificar palavras e quando contém vogais adjacentes ele tem q somar estas vogais, mas quando tenho uma palavra aabaa la soma 3 vogais adjacentes enquanto ao certo serio 4.
tentei implementar de diversas formas mas não funciona.
Estou usando Vector.
Pensei em verificar os valores proximos mas está dando erro.

caso queiram posto o codigo para facilitar.

Mas alguém poderia me dar uma ajuda.

:lol:

Não entendi muito bem como vc fez, tenta posta o código pro pessoal dar uma olhada.

Está e a classe principal ela busca em outras classes somente os valores das palavras

public class Automato extends JFrame implements ActionListener {

// Declaração das variaveis
private JLabel label;

private JTextField tfTexto;

private JButton btCalcular, btLimpar;

// Construtor; criação da tela
public Automato() {

	// Colocando nome na Tela
	super("Automato de Codificação de Palavras");
	setSize(400, 200);
	setLayout(null);

	// Definição das Label, botões e Texto.
	label = new JLabel("Digite a Palavra: ");

	tfTexto = new JTextField(50);
	btCalcular = new JButton("Codificar");
	btCalcular.addActionListener(this);
	btLimpar = new JButton("Limpar");
	btLimpar.addActionListener(this);

	// Posicionaldo os objetos na tela.
	label.setBounds(20, 20, 100, 40);
	add(label);
	tfTexto.setBounds(150, 20, 200, 30);
	add(tfTexto);
	btLimpar.setBounds(50, 80, 100, 30);
	add(btLimpar);
	btCalcular.setBounds(220, 80, 100, 30);
	add(btCalcular);
	setVisible(true);
}

public Vector<String> getLetras() {

	// Armazeando cada letra da palavra
	Vector<String> letras = new Vector<String>();
	int cont = 1;

	String palavra = Acentos.remover(tfTexto.getText());

	for (int i = 0; i < tfTexto.getText().length(); i++) {
		letras.add(i, palavra.substring(i, cont));
		cont++;
	}

	return letras;

}

public void calcular() {

	int posicao = 1;
	int vogalAdj = 0;
	int vogais = 1;
	int resultado = 0;
	int soma = 0;
	String anterior = "B";
	boolean adjacente = false;

	Vogal vogal = new Vogal();
	Consoante con = new Consoante();
	Adjacente va = new Adjacente();
	CaracteresEspeciais especial = new CaracteresEspeciais();

	Vector<String> letras = getLetras();

	Iterator<String> auxiliar = letras.iterator();

	while (auxiliar.hasNext()) {

		String letra = (String) auxiliar.next();

		if ((letra.toString().equals("a"))
				|| (letra.toString().equals("A"))
				|| (letra.toString().equals("e"))
				|| (letra.toString().equals("E"))
				|| (letra.toString().equals("i"))
				|| (letra.toString().equals("I"))
				|| (letra.toString().equals("o"))
				|| (letra.toString().equals("O"))
				|| (letra.toString().equals("U"))
				|| (letra.toString().equals("u"))) {

			soma = vogal.CodificacaoVogal(letra, soma);
			soma = soma + posicao;
			posicao++;

			adjacente = va.VogalAdjacente(letra, anterior);

			if (adjacente) {

				vogais++;
				vogalAdj = vogais;
			}
		}

		else {

			soma = con.CodificacaoConsoante(letra, soma);
			soma = soma + posicao;
			posicao++;

			

		}

		if (especial.Especial(letra)) {

			JOptionPane
					.showMessageDialog(null, "Palavra " + " inválida !!");

			break;

		}

		anterior = letra;
	}

	resultado = soma + (3 * vogalAdj);

	JOptionPane.showMessageDialog(null, "A palavra Codificada é :"
			+ resultado + "\nContém " + vogalAdj + " Vogais Adjacente");

}

public void actionPerformed(ActionEvent e) {

	if (e.getSource() == btCalcular) {
		calcular();
	}
	if (e.getSource() == btLimpar) {
		tfTexto.setText("");
	}
}

public static void main(String[] args) {
	Automato automato = new Automato();
	automato.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

valores A-E = 1 / F-J = 2 / K-O = 3 / P-T = 4 / U-Z = 5

Qualquer coisa passa seu email que envio para você

Coloquei o codigo assim pra facilita a visualização

[code]public class Automato extends JFrame implements ActionListener {

// Declaração das variaveis
private JLabel label;

private JTextField tfTexto;

private JButton btCalcular, btLimpar;

// Construtor; criação da tela
public Automato() {

// Colocando nome na Tela
super(“Automato de Codificação de Palavras”);
setSize(400, 200);
setLayout(null);

// Definição das Label, botões e Texto.
label = new JLabel("Digite a Palavra: ");

tfTexto = new JTextField(50);
btCalcular = new JButton(“Codificar”);
btCalcular.addActionListener(this);
btLimpar = new JButton(“Limpar”);
btLimpar.addActionListener(this);

// Posicionaldo os objetos na tela.
label.setBounds(20, 20, 100, 40);
add(label);
tfTexto.setBounds(150, 20, 200, 30);
add(tfTexto);
btLimpar.setBounds(50, 80, 100, 30);
add(btLimpar);
btCalcular.setBounds(220, 80, 100, 30);
add(btCalcular);
setVisible(true);
}

public Vector getLetras() {

// Armazeando cada letra da palavra
Vector letras = new Vector();
int cont = 1;

String palavra = Acentos.remover(tfTexto.getText());

for (int i = 0; i < tfTexto.getText().length(); i++) {
letras.add(i, palavra.substring(i, cont));
cont++;
}

return letras;

}

public void calcular() {

int posicao = 1;
int vogalAdj = 0;
int vogais = 1;
int resultado = 0;
int soma = 0;
String anterior = “B”;
boolean adjacente = false;

Vogal vogal = new Vogal();
Consoante con = new Consoante();
Adjacente va = new Adjacente();
CaracteresEspeciais especial = new CaracteresEspeciais();

Vector letras = getLetras();

Iterator auxiliar = letras.iterator();

while (auxiliar.hasNext()) {

String letra = (String) auxiliar.next();

if ((letra.toString().equals(“a”))
|| (letra.toString().equals(“A”))
|| (letra.toString().equals(“e”))
|| (letra.toString().equals(“E”))
|| (letra.toString().equals(“i”))
|| (letra.toString().equals(“I”))
|| (letra.toString().equals(“o”))
|| (letra.toString().equals(“O”))
|| (letra.toString().equals(“U”))
|| (letra.toString().equals(“u”))) {

soma = vogal.CodificacaoVogal(letra, soma);
soma = soma + posicao;
posicao++;

adjacente = va.VogalAdjacente(letra, anterior);

if (adjacente) {

vogais++;
vogalAdj = vogais;
}
}

else {

soma = con.CodificacaoConsoante(letra, soma);
soma = soma + posicao;
posicao++;

}

if (especial.Especial(letra)) {

JOptionPane
.showMessageDialog(null, “Palavra " + " inválida !!”);

break;

}

anterior = letra;
}

resultado = soma + (3 * vogalAdj);

JOptionPane.showMessageDialog(null, “A palavra Codificada é :”

  • resultado + “\nContém " + vogalAdj + " Vogais Adjacente”);

}

public void actionPerformed(ActionEvent e) {

if (e.getSource() == btCalcular) {
calcular();
}
if (e.getSource() == btLimpar) {
tfTexto.setText("");
}
}

public static void main(String[] args) {
Automato automato = new Automato();
automato.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

} [/code]

Ok Obrigada .

Alguém pode me ajudar?

Talvez não tenha entendido muito bem a sua dúvida, talvez se vc postar
só a parte do código que não está certa fique mais fácil.

Mas se o problema é a contagem das adjacentes talvez o problema
esteja nesta parte:

va.VogalAdjacente(letra, anterior);

Pelo jeito vc não leva em consideração a próxima letra (que tbm pode ser uma vogal).
Mas com certeza não da pra dizer pq não sei o que esse método faz.

Se não ajudar da um grito…