Ajuda com Gravaçao de arquivo

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 ]

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) ...

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

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

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;	
}

}

Ó 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.

[code]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;

}

}
[/code]

Espero ter ajudado!
Abraço!

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

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:

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

Abraços,