Ajuda com Gravaçao de arquivo

8 respostas
jholxd

Pessoal é meu primeiro post aki XD
eu to com um problema eu quero escrever uma palavra grava-la num arquivo e repetir esse processo com uma opção e terminar quando o usuário dizer não. segue o código.

import java.io.*;


public class EntradaTexto {

	public static void main(String[] args) {
		String existe = "sim";
		do {
		if(existe == "sim"){
		String linha = "";
		InputStreamReader isr = new InputStreamReader(System.in);
		BufferedReader in = new BufferedReader(isr);
		System.out.println("Digite algo no console e tecle enter");
		try {
		linha = in.readLine();
		System.out.println("Linha: " + linha);
		in.close();
		} catch (Exception e) {
			e.getMessage();
		}
		
		existe =opcao();
		System.out.println(existe);
		}
		try {
			FileWriter o = new FileWriter("c:\arquivos1\destino.txt");
			PrintWriter out = new PrintWriter(o);
			out.flush();
			o.close();
		} catch (Exception e){
			e.getMessage();
		}
		
	  }while(existe != "sim");
	}

	private static String opcao() {
		String existe = "";
		String opcao = "sim";
		InputStreamReader op = new InputStreamReader(System.in);
		BufferedReader in = new BufferedReader(op);
		System.out.println("Digitar outra palavra?");
		try {
		opcao = in.readLine();
		System.out.println("Opção: " + opcao);
		existe = opcao;
		in.close();
		
		} catch (Exception e) {
			e.getMessage();
		}
	return existe;	
	}

}

EDIT - Por favor, use as tags [ code ]

8 Respostas

T

Dica: para comparar 2 strings, não use “==” e sim equals.

Por exemplo:

String s = "abc";
// Isto funciona:
if ("def".equals (s)) ...
// Isto normalmente não funciona:
if ("def" == s) ...
// Isto funciona:
if (! "ghi".equals (s)) ...
// Isto normalmente não funciona:
if ("ghi" != s) ...
jholxd

Eu não conheço esse equals oq ele faz?

jholxd

eu tentei fazer com o equals ainda da problema quando eu ele pede a opção ele não sai dela.

jholxd

amigos eu mudei e coloquei o equals do jeito certo mas nao funciona ainda ele recebe a primeira linha e fecha o programa

segue o código

import java.io.*;

public class EntradaTexto {

public static void main(String[] args) {
	String existe = "sim";
	do {
	if(existe == "sim"){
	String linha = "";
	InputStreamReader isr = new InputStreamReader(System.in);
	BufferedReader in = new BufferedReader(isr);
	System.out.println("Digite algo no console e tecle enter");
	try {
	linha = in.readLine();
	System.out.println("Linha: " + linha);
	in.close();
	} catch (Exception e) {
		e.getMessage();
	}
	
	existe =opcao();
	System.out.println(existe);
	}
	try {
		FileWriter o = new FileWriter("c:\\arquivos1\\destino.txt");
		PrintWriter out = new PrintWriter(o);
		out.flush();
		o.close();
	} catch (Exception e){
		e.getMessage();
	}
	
  }while(! "sim".equals(existe));
}

private static String opcao() {
	String existe = "sim";
	String opcao = "sim";
	InputStreamReader op = new InputStreamReader(System.in);
	BufferedReader in = new BufferedReader(op);
	
	try {
		System.out.println("Digitar outra palavra?");
		opcao = in.readLine();
		System.out.println("Opção: " + opcao);
		existe = opcao;
		in.close();
	
	} catch (Exception e) {
		e.getMessage();
	}
return existe;	
}

}

shoko

Ó cara eu tentei melhorar o seu código aqui, primeiro voce nao poderia fechar o seu buffered sempre, senao ele nao irá digitar mais esse era um dos erros.

o resto vou confessar que nao entendi direito oq voce queria fazer então tentei adaptar uma lógica.

Observe o meu código e veja como é mais facil fazer usando While( que se parece com um loop de if)
além de tentar criar outro método para salvar, deixar as coisas bem distintas.

aa e mais um erro nunca use 2 try em um método só, é muito raro isso ser utilizado(eu nunca vi nenhum caso), utilize apenas um try com vários catchs para excessões diferentes.

import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class TesteLoop {
	public static void main(String[] args) {
		Boolean b = Boolean.TRUE;

		InputStreamReader isr = new InputStreamReader(System.in);
		BufferedReader in = new BufferedReader(isr);

		try {
			while (b){
				String linha = "";
				System.out.println("Digite algo no console e tecle enter");
				linha = in.readLine();
				System.out.println("Linha: " + linha);

				salva(linha);
				b = opcao();

			}

		}

		catch (Exception e) {
			e.getMessage();
		}

	}

	private static void salva(String string) {
		FileWriter o;
		try {
			o = new FileWriter("teste.txt", true);
			PrintWriter out = new PrintWriter(o);
			out.print(string);
			o.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	private static Boolean opcao() {

		String opcao = "";
		Boolean result = Boolean.TRUE;
		InputStreamReader op = new InputStreamReader(System.in);
		BufferedReader in = new BufferedReader(op);

		try {
			System.out.println("Digitar outra palavra?");
			opcao = in.readLine();
			System.out.println("Opção: " + opcao);

			if (opcao.equals("nao")) {
				result = Boolean.FALSE;
			} else if (opcao.equals("sim")) {
				result = Boolean.TRUE;
			} else {
				System.out.println("Opcao Invalida digite sim ou nao");
				result = Boolean.FALSE;
			}

		} catch (Exception e) {
			e.getMessage();
		}
		return result;

	}
}

Espero ter ajudado!
Abraço!

jholxd

A lógica é a seguinte:

O usuario irá digitar algumas linhas, através da entrada padrão.

Estas linhas serão gravadas, uma à uma, em um arquivo chamado log.txt

A gravação encerrará quando for digitada uma linha em branco.

Após encerrar a gravação, listar o conteúdo do arquivo log.txt

não intendi mto a sua lógica mas também eu vi meio correndo eu vou ver amanha com mais calma XD

shoko

a minha pega uma linha e grava em um arquivo txt kra.

ai depois se vc quiser listar isso é só utilizar o comando de listar oq tá no arquivo foi isso que eu tentei fazer.

mais qualquer coisa posta ae :stuck_out_tongue:

pimenta

equals compara objetos. Toda String é um objeto, por isso deve-se utilizar equals ao invés de ==

Abraços,

Criado 12 de maio de 2008
Ultima resposta 27 de jun. de 2008
Respostas 8
Participantes 4