Comparar e codificar uma frase!

3 respostas
S

Ola galera boa noite!!!
Estou com uma duvida ja li o forum de java mas não entendi muito bem!!!
Tenho que fazer um codificadoronde as vogais mantem a posicao os espacos e consoantes trocam entre si!!!
So que estou tendo muita dificuldade e sou iniciando java ag ja tentei com indexOf e com o charAt mas não entendi mt bem!!
Sera que alguem poderia me ajudar a entender melhor
To tentando desenvolver este codigo ag porem ta mt errado !!!
pois gostaria de percorrer uma String onde o usuario digitaria a frase e faria a comparação onde vogal mantem e as consoantes trocam de lugar uma pela outra
Ex: problemas
passa a ser
rpolbrmah

import java.io.*;
import java.util.*;

public class Codificar
{
    public static void main(String[]args)
    {   
        String nome;
        int i;
        Scanner entra = new Scanner(System.in);
        System.out.print("Digite a Frase a ser codificada:");
        nome = entra.next();
        //Percorre a String
        for(i=0; i <nome.length(); i++);
        {   
            //aqui eu gostaria de fazer a comparacao 
            if(nome != 'a'||'e'||'i'||'o'||'u')
            {   
              // oq for diferente trocar
            }
        }
        System.out.println("Exibir a frase codificada:");
        
        
    }
}

3 Respostas

maior_abandonado
sayurit:
Ola galera boa noite!!! Estou com uma duvida ja li o forum de java mas não entendi muito bem!!! Tenho que fazer um codificadoronde as vogais mantem a posicao os espacos e consoantes trocam entre si!!! So que estou tendo muita dificuldade e sou iniciando java ag ja tentei com indexOf e com o charAt mas não entendi mt bem!! Sera que alguem poderia me ajudar a entender melhor To tentando desenvolver este codigo ag porem ta mt errado !!! pois gostaria de percorrer uma String onde o usuario digitaria a frase e faria a comparação onde vogal mantem e as consoantes trocam de lugar uma pela outra Ex: problemas passa a ser rpolbrmah
import java.io.*;
import java.util.*;

public class Codificar
{
    public static void main(String[]args)
    {   
        String nome;
        int i;
        Scanner entra = new Scanner(System.in);
        System.out.print("Digite a Frase a ser codificada:");
        nome = entra.next();
        //Percorre a String
        for(i=0; i <nome.length(); i++);
        {   
            //aqui eu gostaria de fazer a comparacao 
            if(nome != 'a'||'e'||'i'||'o'||'u')
            {   
              // oq for diferente trocar
            }
        }
        System.out.println("Exibir a frase codificada:");
        
        
    }
}

dexa eu ver se e intendi... quando a letra for uma "não vogal", você quer colocar uma outra letra no lugar, mas essa outra letra precisa ser alguma da palavra ou pode ser qualquer outra consoante?

digo isso por que o exemplo que você passou não me ficou muito claro (tem um r a mais e um h inexistente em "problemas").

se for qualquer consoante, você pode fazer um random para buscar um int de x a y onde x e y seriam os números da primeira e ultima letra na tabela asc, converte para um char e verifica se é vogal, se sim busca outro numero, senão substitui a atual consoante por outra...

se for outra consoante da mesma palavra que você quer, então eu te aconselharia a num loop apenas pegar o index das consoantes e guardar num array, depois ir selecionando aleatoriamente endereços do array (com random de 0 a ultima posição do array), e quando encontrar as duas posições diferentes, guardar a letra a ser substituida numa variavel auxiliar substituir a letra atual pela anterior, depois a ultima você põe no lugar da primeira.

se você fosse selecionando de duas em duas e e trocando entre elas, você teria problemas por exemplo com palavra com quantidade impar de consoantes (uma letra ficaria no mesmo lugar).

me diz se é esse mesmo o seu caso, o da segunda opção, caso sim depois com um tempinho eu volto e crio um código de exemplo aqui... caso você precise, e é claro, esse é só um algoritmo que pensei na hora, devem ter outros, de repente até melhores...

S

desculpe mas foi o sono virei a madrugada tentando fazer
mas o problemas ficaria

rpolbesam

no caso seria a troca em si mas se não tiver com o que trocar mantem a posicão
seria no caso o segundo exemplo que me descreveu se puder me ajudar eu agradeceria demais pois, fiquei mt chatiada em não conseguir
Mt obrigado Mesmo a todos!!!

att
Sayuri

maior_abandonado
//vou deixar a parte facil para você, 
//colocar em uma lista os indices de onde estão as consoantes na palavra
//ps, reveja direito seu if
//supondo que a string onde está o texto está na variavel chamada palavra
//e a sua lista chama-se suaListaDeIndices

if (suaListaDeIndices.retornaTamanho() > 1){
	
	exiba ("indices pegos : ");
	for (int i=0;i<suaListaDeIndices.retornaTamanho(); i++){
		exiba(suaListaDeIndices.retornaValorDoIndice(i));//metodo get da lista
	}
	
	int iAuxiliar1 = suaListaDeIndices.retornaValorDoIndice(0);
	int iAuxiliar2 = suaListaDeIndices.retornaValorDoIndice(1);

	//cada um desses é uma consoantes
	String auxiliar1 = null;
	String auxiliar2 = palavra.substring(iAuxiliar1, iAuxiliar1+1);
	
	for (int i=0;i<=suaListaDeIndices.retornaTamanho(); i++){

		auxiliar1 = auxiliar2;
		auxiliar2 = palavra.substring(iAuxiliar2, iAuxiliar2+1);

		palavra = palavra.substring(0, iAuxiliar2) + 
  			  auxiliar1 +
			  palavra.substring(iAuxiliar2+1, palavra.length());

		iAuxiliar1 = iAuxiliar2;
		auxiliar1 = auxiliar2;

		se (i==suaListaDeIndices.retornaTamanho()-2){
			iAuxiliar2 = suaListaDeIndices.retornaValorDoIndice(0);
		}senão se (i == suaListaDeIndices.retornaTamanho() -1){
			break;
			//no ultimo indice, se a consoante tiver na ultima letra da palavra
			//e cair no senão abaixo daria IndexOutOfBoundsException
		}senão{
			iAuxiliar2 = suaListaDeIndices.retornaValorDoIndice(i+2);
		}

	}
	
	System.out.println("palavra gerada: "+palavra);
	
}

se tiver duvida de como transformar isso em java, posta a duvida aqui ainda, de repente se eu demorar para vir (e mais ninguém responder) me manda outra mensagem pq é sinal que eu não vi :D, ai eu respondo >

a claro, e eu testei aqui e exibiu "sporbelam" (ele coloca a consoante no lugar da próxima e a ultima no lugar da primeira, assim nunca vai ficar sem tirar alguma do lugar, exceto se só tiver uma, e ai não entra no if de cima)

Criado 25 de maio de 2010
Ultima resposta 26 de mai. de 2010
Respostas 3
Participantes 2