Ir para o conteúdo
Hercles

Aquivo txt e Java

Mensagens Recomendadas

Hercles

Olá!

Eu tenho uma questão em que os meus professores fizeram o gabarito usado a ideia de "no", "lista ligada". A questão ler um arquivo txt que tem palavras repetidas e corrige tirando as repetições, salvando em outro arquivo txt.

tipo: este este texto repete repete palavras palavras

corrigido em outro arquivo: este texto repete palavras

Eu refiz usando array, está funcionando perfeitamente. Sendo que, se eu colocar mais uma linha no arquivo de leitura da erro. O que pode ser?

package metadosplit;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class CorrigeTexto {

BufferedReader in;
BufferedWriter out2;
String s, arq1, arq2;
public CorrigeTexto(String arq1, String arq2) throws FileNotFoundException, IOException {
	in = new BufferedReader(new FileReader(arq1)); //abriu pra escrita "SaidaSplit.txt"
	out2 = new BufferedWriter(new FileWriter(arq2));  // "Saida2.txt"
}

public void eliminaRepeticaoPalavraConsecutiva() throws IOException {
	String resp ="";
	while ((s = in.readLine()) != null) {
		String v[] = s.split(" ");
		for (int i = 0; i < v.length; i++) {
			if (v[i].contains(v[i++]))
				resp += v[i]+" ";
			}

		System.out.println(resp);
		out2.write(resp);
		out2.close();
		}
	}
}

package metadosplit;

import java.io.IOException;

public class MetadoSplit {

public static void main(String[] args) throws IOException{
	CorrigeTexto c = new CorrigeTexto("SaidaSplit.txt", "Saida2.txt");
	c.eliminaRepeticaoPalavraConsecutiva();	
}  

}

GABARITO DO PROFESSOR:

import java.io.*;
class no{
String info;
no prox;
no(String info){
this.info = info;
prox = null;
}
public String toString(){ return info + " "; }
}
class lista{
no prim;
lista(){ prim = null; }
void insere(String info){
no novo = new no(info);
if(prim == null) prim = novo;
else{
no p = prim;
while(p.prox != null) p = p.prox;
if(info.compareToIgnoreCase(p.info) != 0) p.prox = novo;
}
}
public String toString(){
String resp = "";
no p = prim;
while(p != null){
resp += p.toString();
p = p.prox;
}
return resp + "\n";
}
}
public class Q1_AP2_2013_1{
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new FileReader(args[0]));
String s;
lista l = new lista();
try{
while ((s = in.readLine()) != null){
String vs[] = s.split(" ");
for(int i = 0; i < vs.length; i++) l.insere(vs[i]);
}
}catch (Exception e){
System.out.println("Excecao leitura\n");
}finally{
in.close();
}
BufferedWriter out = new BufferedWriter(new FileWriter("Q1-" + args[0]));
try{
out.write(l.toString());
}catch (Exception e){
System.out.println("Excecao de escrita\n");
}finally{
out.close();
}
}
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Hercles

HappyHippyHippo, me ajuda a entender o código abaixo, por favor :)

public class No {
String info;
No prox;
No(String info) {
	this.info = info;
	prox = null;
}

public String toString() {
	return info + " ";
}
}

Minha dúvida é neste abaixo. Queria entender porque prim recebe null... prim recebe novo... Isso é tipo um vetor?

package javaapplication133;

public class Lista {
No prim;

Lista() {
	prim = null;
}
void insere(String info) {
	No novo = new No(info);
	if (prim == null) { // ta vazio
		prim = novo;
	} else {
		No p = prim;
		while (p.prox != null) {
			p = p.prox;
		}
		if (info.compareToIgnoreCase(p.info) != 0) {
			p.prox = novo;
		}
	}
}

public String toString() {
	String resp = "";
	No p = prim;
	while (p != null) {
		resp += p.toString();
		p = p.prox;
	}
	return resp + "\n";
}
}

package javaapplication133;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Principal {

public static void main(String[] args) throws IOException {
	BufferedReader in = new BufferedReader(new FileReader("texto.txt"));
	String s;
	Lista l = new Lista();
	try {
		while ((s = in.readLine()) != null) {
			String vs[] = s.split(" ");
			for (int i = 0; i < vs.length; i++) {
				l.insere(vs[i]);
			}
		}
	} catch (Exception e) {
		System.out.println("Excecao leitura\n");
	} finally {
		in.close();
	}
	BufferedWriter out = new BufferedWriter(new FileWriter("Q1-" + "saida.txt"));
	try {
		out.write(l.toString());
		System.out.println(l);
	} catch (Exception e) {
		System.out.println("Excecao de escrita\n");
	} finally {
		out.close();
	}
}
}

Editado por Hercles

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.