Tradutor Bilíngue em Java: Português-Inglês-Português

Sou iniciante em java e gostaria de saber se alguém pode me ajudar a desenvolver um tradutor bilíngue com as seguintes classes e Atributos:

Palavra
portugues
ingles

Dicionário
palavras[]
adicionarPalavra()
removerPalavra()
consultarPalavra()

Tradutor
dicionario
traduzirParaIngles()
traduzirParaPortugues()

trabalho de escola né? ninguem vai escrever o código pra vc… e vc ja tem os métodos… acho que não tem muito segredo

o array palavra[] se encontra em uma classe portugues e uma classe ingles… nele vc coloca as palavras e usa os métodos adicionar, remover e consultar pra manipular as palavras dele

e dae no método principal vc cria a classe dicionario com os metodos pra traduzir com acesso às classes portugues e ingles…

Ok, mas não é exatamente dessa forma como vc informou não, mas valeu pela dica.

Se não me engano no java tem uma opção que você defini as palavras de acordo com a lingua básica, mudando de acordo com a JRE instalada no pc.
Vou procurar e volto responder

Seja mais claro e diga quais são as suas dúvidas.

Fala aí mosca…
Kara vc quer fazer um tradutor tipo de um texto inteiro ou de apenas algumas palavras???
Pq para ser um bom tradutor de texto é complicado… você já viu como funciona o tradutor do google???
Ele consulta zilhões de documentos traduzidos para comparar e de pois gerar a tradução…(e ainda assim naum é perfeito).

Se for apenas de algumas palavras tenta fazer assim:

Crie uma classe Dicionario para preencher os arrays com as palavras:

import java.util.ArrayList;
/**
 *
 * @author honurb
 */
public class Dicionario
{
    private ArrayList <String> palavrasIngles;//Guarda as palavras em Inglês
    private ArrayList <String> palavrasPortugues;//Guarda as palavras em Português
    
    
    public Dicionario()
    {
        palavrasIngles    = new ArrayList<String>();
        palavrasPortugues = new ArrayList<String>();
    }
    
    //Para prenecher nosso Dicionário temos que colocar a palavra em Potuguês
    // e a Palavra equivalente em Inglês.
    //Assim a palavra e sua tradução fica sempre com o mesmo Nº de índice. 
    public void preencheDicionario(String palavraPort, String palavraIng)
    {
        palavrasPortugues.add (palavraPort);
        palavrasIngles.add (palavraIng);      
    }
    
    public ArrayList getArrayPalavrasIng()//retorna Array de palavras em Inglês 
    {
        return palavrasIngles;
    }
    
    public ArrayList getArrayPalavrasPort()//retorna array de palavras em Português
    {
        return palavrasPortugues;
    }
    
}

Depois crie uma classe Tradutor para logicamente traduzir as palavras:

import java.util.ArrayList;
/**
 *
 * @author honurb
 */
public class Tradutor {
    

    public String traduzIngles_Portugues(String palavra)//traduz palavra do inglês para Português
    {
        String traducao = "Palavra não encontrado no diconário";
        Dicionario dicio = new Dicionario();
        ArrayList <String> palavrasIng  = dicio.getArrayPalavrasIng();//Nosso array com palavras em Inglês
        ArrayList <String> palavrasPort = dicio.getArrayPalavrasPort();//Nosso array com palavras em Português
        
        for (int i = 0; i < palavrasIng.size(); i++) 
        {  
            if( palavrasIng.get(i).equals(palavra))//Compara se a palavra é igual
            {
              int indice = i;//Guarda o índice para podermos procurar no array com palavras em português
              i = palavrasIng.size();//Deixa a variável i maior que o tamanho do array para sairmos do for
              traducao = palavrasPort.get(indice);
            }
        }
      System.out.println(traducao);
      return traducao;  

    }
    
    public String traduzPortugues_Ingles(String palavra)//traduz palavra do Português para Inglês
    {
        String traducao = "Palavra não encontrado no diconário";
        Dicionario dicio = new Dicionario();
        ArrayList <String> palavrasIng  = dicio.getArrayPalavrasIng();//Nosso array com palavras em Inglês
        ArrayList <String> palavrasPort = dicio.getArrayPalavrasPort();//Nosso array com palavras em Português
        
        for (int i = 0; i < palavrasPort.size(); i++) 
        {  
            if( palavrasPort.get(i).equals(palavra))//Compara se a palavra é igual
            {
              int indice = i;//Guarda o índice para podermos procurar no array com palavras em Inglês
              i = palavrasPort.size();//Deixa a variável i maior que o tamanho do array para sairmos do for
              traducao = palavrasIng.get(indice);
            }
        }
      System.out.println(traducao);
      return traducao;  

    }
}

Atente-se nos comentário que coloquei para entender a lógica do código…

Até mais…

honurb,

Acredito que seja melhor utilizar uma abordagem de uma classe Palavra onde conteria a palavra e sua tradução.
Assim não precisaria criar dois ArrayLists e preenche-los.

Eu faria algo do tipo:

public class Palavra {
	private String portugues;
	
	private String ingles;
	
	public Palavra(String portugues, String ingles){
		this.portugues = portugues;
		this.ingles = ingles;
	}

	public String getPortugues() {
		return portugues;
	}

	public void setPortugues(String portugues) {
		this.portugues = portugues;
	}

	public String getIngles() {
		return ingles;
	}

	public void setIngles(String ingles) {
		this.ingles = ingles;
	}

	//Importante implementar os métodos equals e hashCode
}

Classe Dicionário:

package bean;

import java.util.Set;

public class Dicionario {
	/* Utilizando interface Set, pois a mesma não permite
	   adicionar palavras repetidas
	*/
	private Set<Palavra> palavras;
	
	public Dicionario(Set<Palavra> palavras){
		this.palavras = palavras;
	}
	
	public void adicionar(Palavra palavra){
		this.palavras.add(palavra);
	}
	
	public Boolean remover(String palavra){
		return palavras.remove(palavra);
	}
	
	public Palavra consultar(String palavra){
		for (Palavra p : palavras) {
			if(p.getPortugues().equals(palavra) || p.getIngles().equals(palavra) ){
				return p;
			}
				
		}
		return null;
	}

	public Set<Palavra> getPalavras() {
		return palavras;
	}

	public void setPalavras(Set<Palavra> palavras) {
		this.palavras = palavras;
	}
	
	
}

Tradutor:

[code]
public class Tradutor {
private Dicionario dicionario;

public Tradutor(Dicionario d) {
	this.dicionario = d;
}

public Dicionario getDicionario() {
	return dicionario;
}

public void setDicionario(Dicionario dicionario) {
	this.dicionario = dicionario;
}

public String traduzirParaIngles(String palavra){
	Palavra p = dicionario.consultar(palavra);
	if(p != null){
		return p.getIngles(); 
	} 
	
	return "Tradução não encontrada!";
}

public String traduzirParaPortugues(String palavra){
	Palavra p = dicionario.consultar(palavra);
	if(p != null){
		return p.getPortugues(); 
	} 
	
	return "Tradução não encontrada!";
}

}[/code]

E o main com um exemplo de uso:

public static void main(String[] args) {
		
		Set<Palavra> setPalavras = new HashSet<Palavra>();
		
		setPalavras.add(new Palavra("nome", "name"));
		setPalavras.add(new Palavra("mundo", "world"));
		setPalavras.add(new Palavra("homem", "man"));
		setPalavras.add(new Palavra("mulher", "woman"));
		setPalavras.add(new Palavra("cachorro", "dog"));
		setPalavras.add(new Palavra("gato", "cat"));
		
		Dicionario d = new Dicionario(setPalavras);
		Palavra palavra = new Palavra("legal", "cool");
		
		d.adicionar(palavra);
		
		Tradutor t = new Tradutor(d);
		
		System.out.println(t.traduzirParaIngles("legal"));
		

	}

Espero ter ajudado.

Abraços,

e pensa que antigamente para se conseguir código pronto ao menos era necessário criar um perfil fake com nome femenino… o povo sem noção (não to nem reclamando de quem pede para fazer os seus trabalhos da facudade, estou reclamando de quem faz mesmo).

[quote=riqueluz]honurb,

Acredito que seja melhor utilizar uma abordagem de uma classe Palavra onde conteria a palavra e sua tradução.
Assim não precisaria criar dois ArrayLists e preenche-los.

[/quote]

Muito bom… além de parecer mais simples me parece mais eficiente a sua abordagem.
O legal da programação é isso, as vezes vc pensa numa solução e percebe q algo mais simples resolve todos seus problemas. :lol:

[quote=honurb]Fala aí mosca…
Kara vc quer fazer um tradutor tipo de um texto inteiro ou de apenas algumas palavras???
Pq para ser um bom tradutor de texto é complicado… você já viu como funciona o tradutor do google???
Ele consulta zilhões de documentos traduzidos para comparar e de pois gerar a tradução…(e ainda assim naum é perfeito).
(…)
[/quote]

Valeu pela dica cara, me ajudou muito. Forum é pra isso mesmo pra tirar duvidas e ajudar- nos uns aos outros.