Estou a começar a utilizar java e tenho um projecto para fazer…
Tenho de ter uma matriz, em que nas linhas recebe palavras e nas colunas textos .txt.
O objectivo é depois comparar se a palavra está nos textos txt. depois tenho de contar o numero de vezes que essa palavra aparece nos textos. nao sei se me estou a explicar bem…
mas preciso mesmo de ajuda.
o meu programa neste momento ja pede ao utilizador para escolher os documentos que quer introduzir, ja os introduz e guarda todas as palavras que estao dentro do documento.
Agora o meu problema é mesmo conseguir introduzir isso na matriz…
Será que me podem dizer como posso fazer isso? ou indicar-me algum site onde haja exemplos disso?tou farta de procurar e nao encontro nada que me ajude…
Obrigado
eu tb sou pessimo em portugues… mas um ponto de partida, é vc entender a real diferença entre
k e q
k tem a pronuncia de cá
q tem a pronuncia de que
então trocar… que por k, é uma pessima ideia… pense nisso!
^^
Ps.: Não entendeu ? tente ler seu texto, eu tive um tremenda dificuldade ^^
peço desculpa é do hábito… :)vou reescrever
[code]public class ContaPalavra {
private final String palavra;
private final Map<String,Integer> txtCount = new HashMap<String,Integer>();
public ContaPalavra(String palavra) {
this.palavra = palavra;
}
public ContaPalavra addCount(String txtFile) {
int count = getCount(txtFile);
txtCount.put(txtFile, ++count);
return this;
}
public int getCount(String txtFile) {
if (!txtCount.containsKey(txtFile))
return 0;
return txtCount.get(txtFile);
}
public String getPalavra() {
return palavra;
}
//é imporante implementar EQUALS e HASHCODE quando usa coleções, c kizer mais infos, veja meu blog, na minha assinatura
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final ContaPalavra other = (ContaPalavra) obj;
if ((this.palavra == null) ? (other.palavra != null) : !this.palavra.equals(other.palavra)) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 7;
hash = 47 * hash + (this.palavra != null ? this.palavra.hashCode() : 0);
return hash;
}
}[/code]
[code]public class GuardaPalavras {
private List lista = new ArrayList();
public GuardaPalavras addPalavra(String palavra, String txtFile) {
ContaPalavra cp = getContaPalavra(palavra);
if (cp == null) {
cp = new ContaPalavra(palavra);
lista.add(cp);
}
cp.addCount(txtFile);
return this;
}
public ContaPalavra getContaPalavra(String palavra) {
for (ContaPalavra cp : lista) {
if (cp.getPalavra().equals(palavra))
return cp;
}
return null;
}
public List<ContaPalavra> getLista() {
return lista;
}
public int getCount(String palavra, String txtFile) {
ContaPalavra cp = getContaPalavra(palavra);
if (cp == null)
return 0;
return cp.getCount(txtFile);
}
}[/code]
os imports usados foram…
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
como usar ?? assim…
[code] public static void main(String … args) {
GuardaPalavras repositorio = new GuardaPalavras();
repositorio
.addPalavra("José","diario.txt")
.addPalavra("Macaco","abobrinha.txt")
.addPalavra("José","abobrinha.txt")
.addPalavra("José","abobrinha.txt")
.addPalavra("José","abobrinha.txt");
System.out.println(repositorio.getCount("José","abobrinha.txt")); //resultado 3
System.out.println(repositorio.getCount("José","diario.txt")); //resultado 1
System.out.println(repositorio.getCount("Macaco","diario.txt")); //resultado 0
System.out.println(repositorio.getCount("Cebola","diario.txt")); //resultado 0
}[/code]
Obrigado! vou tentar implementar esse codigo no meu:)
muito obrigado pela ajuda!
Nao faz exactamente o que eu pretendo, mas foi uma grande ajuda para contar as palavras e para perceber a maneira como sao gravadas as informações!
Muito Obrigado.
BuZZa
[quote=BuZZa]Obrigado! vou tentar implementar esse codigo no meu:)
muito obrigado pela ajuda!:)[/quote]
ok … mas leia o código com atenção, veja o que a calsse ContaPalavra faz…
veja que ela guarda 2 coisas… uma String, contendo a palavra… e um mapa…
um mapa sempre guarda informações de chaves,e valores… a chave no caso é o arquivoTxt, e o valor é o contador…
getCount(txtFile) …
eu verifico no mapa, se ja existe o alguma key para txtFile, se existir, eu recupero o valor para o contador através de “txtCount.get(txtFile);” caso não existe o contador é “0”.
veja que quando alguem faz um addCont(txtFile) … eu subistituo o valor no mapa, pelo novo valor, se não existir o valor no mapa, ele é criado pelo proprio mapa, atuomaticamente … “txtCount.put(txtFile, ++count);” … veja que antes de incluir, eu uso ++count, ou seja, incremento o contador, antes de atualizar o valor.
Afinal tinha entendido mal o que tenho de fazer…
Tenho de ter por exemplo 2 textos: s1=“joao e pedro no joao” e s2=“ola sou o joao pedro”
tenho de comparar se as palavras que estao no s1 estao no s2 ,e conta-las pa matriz…(esta parte é que me esta a deixar doida)
junto envio o codigo, para ver se me podem ajudar…
vou tentar dar o exemplo em linguagem natural do que preciso fazer…
s1=“joao e pedro no o joao” e s2=“ola sou o joao pedro”
se “joao” do s1 estiver em s2 conta++ e passo valor para essa posiçao da matriz
se nao estiver meto 0
neste caso o conta=1, porque so aparece 1 vez.
Se a palavra se repetir no s1 tem de ser excluida, mas no S2 nao.
com este exemplo deveria dar uma matriz deste genero:
0 0 0 1 0
0 0 0 0 0
0 0 0 0 1
0 0 0 0 0
0 0 1 0 0
0 0 0 1 0
nao consigo fazer a matriz… tens de ser tudo automatico, a escolha dos textos é automatica (ja feito) e dp a passagem dos valores tambem…