[RESOLVIDO] Imprimir arquivo em Txt

Bom dia,
Estou com um dúvida, não sei se irá ter como imprimir um arquivo chamado tabuada_completa1.txt
Segue o código:

package br.com.tlmtech.teste;

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

import javax.swing.JOptionPane;

public class TabuadaCompleta {

	public static void main(String[] args) throws IOException {

		int valor_inicio_tab, valor_fim_tabuada, numInicio, numFinal, i, cont;
		boolean dadosValidos;
		StringBuilder tabuadas = new StringBuilder();
		do {
			dadosValidos = true;
			valor_inicio_tab = Integer.parseInt(JOptionPane.showInputDialog("Numero inicia a tabuada.: "));
			valor_fim_tabuada = Integer.parseInt(JOptionPane.showInputDialog("Numero termino da tabuada.: "));
			numInicio = Integer.parseInt(JOptionPane.showInputDialog("Inicio do numero.: "));
			numFinal = Integer.parseInt(JOptionPane.showInputDialog("Termino do numero.: "));
			if ((valor_inicio_tab > valor_fim_tabuada) || (numInicio > numFinal)) {
				JOptionPane.showMessageDialog(null,
						"Informacoes invalidas\nNumeros iniciais precisam ser menor que do fim");
				dadosValidos = false;
			} else {
				JOptionPane.showMessageDialog(null, "Numeros validos!!");
				dadosValidos = true;
			}
		} while (dadosValidos == false);
		FileWriter arquivo = new FileWriter("tabuada_completa1.txt");
		PrintWriter gravar = new PrintWriter(arquivo);
		
		for (cont = valor_inicio_tab; cont <= valor_fim_tabuada; cont++) {
			tabuadas.append("=======================");
			tabuadas.append("\n**** TABUADA DE " + cont+" ****");
			tabuadas.append("\n=======================\n");
			for (i = numInicio; i <= numFinal; i++) {
				tabuadas.append("    " + cont + " X " + i + " = " + cont * i+"\n");
			}
		}
		tabuadas.append("=======================");
		tabuadas.append(gravar);
		arquivo.close();
		System.out.println(tabuadas);
		System.out.println("Gravado em Arquivo tabuada_completa1.txt");
	}
}

Só que no final após imprimir em console ele aparece o seguinte embaixo:

=======================
**** TABUADA DE 1 ****
=======================
    1 X 1 = 1
    1 X 2 = 2
    1 X 3 = 3
    1 X 4 = 4
    1 X 5 = 5
    1 X 6 = 6
    1 X 7 = 7
    1 X 8 = 8
    1 X 9 = 9
    1 X 10 = 10
=======================
**** TABUADA DE 2 ****
=======================
    2 X 1 = 2
    2 X 2 = 4
    2 X 3 = 6
    2 X 4 = 8
    2 X 5 = 10
    2 X 6 = 12
    2 X 7 = 14
    2 X 8 = 16
    2 X 9 = 18
    2 X 10 = 20
=======================
**** TABUADA DE 3 ****
=======================
    3 X 1 = 3
    3 X 2 = 6
    3 X 3 = 9
    3 X 4 = 12
    3 X 5 = 15
    3 X 6 = 18
    3 X 7 = 21
    3 X 8 = 24
    3 X 9 = 27
    3 X 10 = 30
=======================
**** TABUADA DE 4 ****
=======================
    4 X 1 = 4
    4 X 2 = 8
    4 X 3 = 12
    4 X 4 = 16
    4 X 5 = 20
    4 X 6 = 24
    4 X 7 = 28
    4 X 8 = 32
    4 X 9 = 36
    4 X 10 = 40
=======================
**** TABUADA DE 5 ****
=======================
    5 X 1 = 5
    5 X 2 = 10
    5 X 3 = 15
    5 X 4 = 20
    5 X 5 = 25
    5 X 6 = 30
    5 X 7 = 35
    5 X 8 = 40
    5 X 9 = 45
    5 X 10 = 50
=======================
**** TABUADA DE 6 ****
=======================
    6 X 1 = 6
    6 X 2 = 12
    6 X 3 = 18
    6 X 4 = 24
    6 X 5 = 30
    6 X 6 = 36
    6 X 7 = 42
    6 X 8 = 48
    6 X 9 = 54
    6 X 10 = 60
=======================
**** TABUADA DE 7 ****
=======================
    7 X 1 = 7
    7 X 2 = 14
    7 X 3 = 21
    7 X 4 = 28
    7 X 5 = 35
    7 X 6 = 42
    7 X 7 = 49
    7 X 8 = 56
    7 X 9 = 63
    7 X 10 = 70
=======================
**** TABUADA DE 8 ****
=======================
    8 X 1 = 8
    8 X 2 = 16
    8 X 3 = 24
    8 X 4 = 32
    8 X 5 = 40
    8 X 6 = 48
    8 X 7 = 56
    8 X 8 = 64
    8 X 9 = 72
    8 X 10 = 80
=======================
**** TABUADA DE 9 ****
=======================
    9 X 1 = 9
    9 X 2 = 18
    9 X 3 = 27
    9 X 4 = 36
    9 X 5 = 45
    9 X 6 = 54
    9 X 7 = 63
    9 X 8 = 72
    9 X 9 = 81
    9 X 10 = 90
=======================
**** TABUADA DE 10 ****
=======================
    10 X 1 = 10
    10 X 2 = 20
    10 X 3 = 30
    10 X 4 = 40
    10 X 5 = 50
    10 X 6 = 60
    10 X 7 = 70
    10 X 8 = 80
    10 X 9 = 90
    10 X 10 = 100
=======================

java.io.PrintWriter@61e4705b

descreve o objeto gravado em Arquivo tabuada_completa1.txt

O arquivo está vazio, teria alguma alternativa para o que é exibida no objeto ou vou ter que criar a informação do tipo String como tabuadas?

Em nenhum momento você está gravando no arquivo.

Ao invés de gravar no arquivo, você está concatenando o objeto gravar no seu StringBuilder chamado tabuadas.

Tem que fazer exatamente o contrário: gravar o objeto tabuadas no OutputStream referenciado pela variável gravar:

Troque esta linha:

tabuadas.append(gravar);

Por esta:

gravar.print(tabuadas);

Ah, sim, eu consegui fazer e deu certo, consultei uma documentação que é necessário gravar…obrigado pela ajuda!!
Faz tempo que não mecho e dá esquecimento…:slight_smile: Obrigado pela ajuda.

1 curtida

Por favor, se resolveu, marque como resolvida. Se a resposta que te deram resolveu, prestigie a pessoa e marque que aquela resposta é a solução. Se tu mesmo resolveu, coloque o código (ou poste a parte que tu corrigiu) e marque esse seu ‘repost’ como resposta da questão. Assim, outras pessoas que tiverem o mesmo problema que o seu encontrarão essa pergunta e a solução, podendo servir-se do conhecimento. Também facilita distinguir quais perguntas foram ou não solucionadas.

1 curtida

OK, entendi, vou postar o código completo:
Muito obrigado
[código]
package br.com.tlmtech.teste;

import java.io.*;
import javax.swing.JOptionPane;

public class TabuadaCompleta implements Serializable{

public static void main(String[] args) throws IOException {

	int valor_inicio_tab, valor_fim_tabuada, numInicio, numFinal, i, cont;
	boolean dadosValidos;
	StringBuilder tabuadas = new StringBuilder();
	do {
		dadosValidos = true;
		valor_inicio_tab = Integer.parseInt(JOptionPane.showInputDialog("Numero inicia a tabuada.: "));
		valor_fim_tabuada = Integer.parseInt(JOptionPane.showInputDialog("Numero termino da tabuada.: "));
		numInicio = Integer.parseInt(JOptionPane.showInputDialog("Inicio do numero.: "));
		numFinal = Integer.parseInt(JOptionPane.showInputDialog("Termino do numero.: "));
		if ((valor_inicio_tab > valor_fim_tabuada) || (numInicio > numFinal)) {
			JOptionPane.showMessageDialog(null,
					"Informacoes invalidas\nNumeros iniciais precisam ser menor que do fim");
			dadosValidos = false;
		} else {
			JOptionPane.showMessageDialog(null, "Numeros validos!!");
			dadosValidos = true;
		}
	} while (dadosValidos == false);
	for (cont = valor_inicio_tab; cont <= valor_fim_tabuada; cont++) {
		tabuadas.append("=======================");
		tabuadas.append("\n**** TABUADA DE " + cont+" ****");
		tabuadas.append("\n=======================\n");
		for (i = numInicio; i <= numFinal; i++) {
			tabuadas.append("    " + cont + " X " + i + " = " + cont * i+"\n");
		}
	}
	tabuadas.append("=======================");
	System.out.println(tabuadas);
	FilterOutputStream fos = null;
	
	try {
		FileOutputStream arquivo = new FileOutputStream("tabuada_completa1.txt");
		ObjectOutputStream obj_tabuada_completa = new ObjectOutputStream(arquivo);
		obj_tabuada_completa.writeObject(tabuadas);
		obj_tabuada_completa.flush();
		JOptionPane.showMessageDialog(null, "Gravado em Arquivo tabuada_completa1.txt");
		System.out.println("Gravado em Arquivo tabuada_completa1.txt");
	}catch(Exception erro_grava){
		
	}
}	

}
[codigo]
Existe um loop para que também o número inicial ou a tabuada inicial não seja maior, é uma consistência interessante, obrigado, pois vou também contribuir com a página.

1 curtida

@Thiago_Lima1011 marque a sua resposta como a solução, afinal foi tu mesmo quem solucionou a questão.

Ok

Como faço para ser um dos contribuidores do GUJ:?

Ué, contribuindo. :slight_smile:
Ajudando a tirar as dúvidas da galera e postando coisas úteis.

OK, obrigado.

1 curtida