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.
Não entendi muito bem como vc fez, tenta posta o código pro pessoal dar uma olhada.
elisangela.bruno
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 variaveisprivateJLabellabel;privateJTextFieldtfTexto;privateJButtonbtCalcular,btLimpar;// Construtor; criação da telapublicAutomato(){// Colocando nome na Telasuper("Automato de Codificação de Palavras");setSize(400,200);setLayout(null);// Definição das Label, botões e Texto.label=newJLabel("Digite a Palavra: ");tfTexto=newJTextField(50);btCalcular=newJButton("Codificar");btCalcular.addActionListener(this);btLimpar=newJButton("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);}publicVector<String>getLetras(){// Armazeando cada letra da palavraVector<String>letras=newVector<String>();intcont=1;Stringpalavra=Acentos.remover(tfTexto.getText());for(inti=0;i<tfTexto.getText().length();i++){letras.add(i,palavra.substring(i,cont));cont++;}returnletras;}publicvoidcalcular(){intposicao=1;intvogalAdj=0;intvogais=1;intresultado=0;intsoma=0;Stringanterior="B";booleanadjacente=false;Vogalvogal=newVogal();Consoantecon=newConsoante();Adjacenteva=newAdjacente();CaracteresEspeciaisespecial=newCaracteresEspeciais();Vector<String>letras=getLetras();Iterator<String>auxiliar=letras.iterator();while(auxiliar.hasNext()){Stringletra=(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");}publicvoidactionPerformed(ActionEvente){if(e.getSource()==btCalcular){calcular();}if(e.getSource()==btLimpar){tfTexto.setText("");}}publicstaticvoidmain(String[]args){Automatoautomato=newAutomato();automato.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
Qualquer coisa passa seu email que envio para você
T
tof10
Coloquei o codigo assim pra facilita a visualização
publicclassAutomatoextendsJFrameimplementsActionListener{// Declaração das variaveis privateJLabellabel;privateJTextFieldtfTexto;privateJButtonbtCalcular,btLimpar;// Construtor; criação da tela publicAutomato(){// 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=newJLabel("Digite a Palavra: ");tfTexto=newJTextField(50);btCalcular=newJButton("Codificar");btCalcular.addActionListener(this);btLimpar=newJButton("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);}publicVector<String>getLetras(){// Armazeando cada letra da palavra Vector<String>letras=newVector<String>();intcont=1;Stringpalavra=Acentos.remover(tfTexto.getText());for(inti=0;i<tfTexto.getText().length();i++){letras.add(i,palavra.substring(i,cont));cont++;}returnletras;}publicvoidcalcular(){intposicao=1;intvogalAdj=0;intvogais=1;intresultado=0;intsoma=0;Stringanterior="B";booleanadjacente=false;Vogalvogal=newVogal();Consoantecon=newConsoante();Adjacenteva=newAdjacente();CaracteresEspeciaisespecial=newCaracteresEspeciais();Vector<String>letras=getLetras();Iterator<String>auxiliar=letras.iterator();while(auxiliar.hasNext()){Stringletra=(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");}publicvoidactionPerformed(ActionEvente){if(e.getSource()==btCalcular){calcular();}if(e.getSource()==btLimpar){tfTexto.setText("");}}publicstaticvoidmain(String[]args){Automatoautomato=newAutomato();automato.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}
elisangela.bruno
Ok Obrigada .
Alguém pode me ajudar?
hesenger
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.