Apresentar as palavras comum entre dois arquivos TXT

3 respostas
V

Boa tarde, estou tentando comparar dois arquivos txt, mas ele me apresenta o valor do 1 arquivo e nao a comparaçao entre os dois... Alguém sabe me ajudar???

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashSet;
import java.util.Scanner;


class Main {

	static String linha;
	static String linha2;

	public static double jaccardSimilarity(String similar1, String similar2) {
		HashSet<String> h1 = new HashSet<String>();
		HashSet<String> h2 = new HashSet<String>();

		for (String s : similar1.split("\\s+")) {
			h1.add(s);
		}
		System.out.println("h1 " + h1);
		for (String s : similar2.split("\\s+")) {
			h2.add(s);
		}
		System.out.println("h2 " + h2);

		int sizeh1 = h1.size();
		// Pega todos os elementos 
		h1.retainAll(h2);
		// h1 contem intersecçao de h1 e h2
		System.out.println("Intersection " + h1);

		h2.removeAll(h1);
		// h2 contem elementos unicos
		System.out.println("Unique in h2 " + h2);

		// Uniao
		int union = sizeh1 + h2.size();
		int intersection = h1.size();

		return (double) intersection / union;

	}

	public static void main(String args[]) throws IOException {
		Scanner ler = new Scanner(System.in);
		Scanner ler2 = new Scanner(System.in);

		System.out.printf("Informe o nome de arquivo1 texto:\n");
		String nome = ler.nextLine();
		System.out.printf("Informe o nome de arquivo2 texto:\n");
		String nome2 = ler2.nextLine();

		System.out.printf("\nConteúdo do arquivo texto:\n");
		try {
			FileReader arq = new FileReader(nome);
			BufferedReader lerArq = new BufferedReader(arq);

			linha = lerArq.readLine();

			while (linha != null) {
				System.out.printf("%s\n", linha);
				String linhaa = lerArq.readLine();
				linha = linhaa;
			}
			arq.close();
			System.out.printf("Linha completa: " + linha);

		} catch (IOException e) {
			System.err.printf("Erro na abertura do arquivo: %s.\n",
					e.getMessage());
		}

		// System.out.println(jaccardSimilarity(linha, linha2));
	}
}

BRIGADA, Veronica

3 Respostas

Rodrigo_Sasaki

Esse seu método jaccardSimilarity, você pretende usar ele, certo? Mas não está usando.

Tudo o que você faz é ler o primeiro arquivo e imprimir, quando na verdade teria que carregar os 2 arquivos, e iniciar as comparações. Faça do jeito mais simples que conseguir imaginar, depois você pensa em otimizar se for necessário

V

Obrigada,

Nao estou conseguindo carregar os dois arquivos =s

Alguma dica?

Obrigada

Rodrigo_Sasaki

Faça a mesma coisa que está fazendo para o primeiro arquivo, leia linha a linha. O jeito mais simples é carregar cada arquivo em uma lista de Strings, onde cada item é uma linha.List<String> file1 = loadFile("caminho_do_arquivo_1"); List<String> file2 = loadFile("caminho_do_arquivo_2");Aí o método loadFile você mesmo implementa

Criado 13 de janeiro de 2014
Ultima resposta 15 de jan. de 2014
Respostas 3
Participantes 2