Deseja-se um aplicativo capaz de tomar os dados em um arquivo de texto contendo os PIBs por estado do Brasil (pib.txt) carregá-los na memória e executar os seguintes itens:
a-) Imprimir na tela a lista de PIB por estado em percentual em relação ao total.
b-) Gerar um arquivo de saída (saida.txt) sumarizando (somando) o PIB por regiões. Será fornecida uma lista de estados por regiões que deve ser lida do arquivo regioes.txt
No arquivo pib.txt tem:
São Paulo;1349
Rio de Janeiro;462
Minas Gerais;386
Rio Grande do Sul;263
Paraná;239
Santa Catarina;169
Distrito Federal;164
Bahia;159
Goiás;111
Pernambuco;104
EspÃrito Santo;97
Pará;88
Ceará;87
Mato Grosso;71
Amazonas;64
Maranhão;52
Mato Grosso do Sul;49
Rio Grande do Norte;36
ParaÃba;35
Alagoas;28
Rondônia;27
Sergipe;26
PiauÃ;24
Tocantins;18
Amapá;8.9
Acre;8.7
Roraima;6.9
e no regioes.txt tem:
Norte
Rondônia
Acre
Amazonas
Roraima
Pará
Amapá
Tocantins
Nordeste
Maranhão
PiauÃ
Ceará
Rio Grande do Norte
ParaÃba
Pernambuco
Alagoas
Sergipe
Bahia
Sudeste
Minas Gerais
EspÃrito Santo
Rio de Janeiro
São Paulo
Sul
Paraná
Santa Catarina
Rio Grande do Sul
Centro-Oeste
Mato Grosso do Sul
Mato Grosso
Goiás
Distrito Federal
eu havia feito o código com:
package ado1;
import java.io.*;
import java.io.FileNotFoundException;
public class Ado1 {
public static void main(String[] args) {
// nome do arquivo
String nomeDoArquivo1,nomeDoArquivo2 ;
// String nomeDoArquivo2 = "regioes.txt";
nomeDoArquivo1 = "pib.txt";
nomeDoArquivo2 = "regioes.txt";
// linha temporaria
String linha = null;
float quantidade = 0;
String[] dados = null;
String estado = null;
float pib = 0;
/* ------------------------------------- */
/* Abertura de arquivo e loop de leitura */
/* ------------------------------------- */
try {
FileReader fileReader = new FileReader(nomeDoArquivo1);
BufferedReader bufferedReader = new BufferedReader(fileReader);
// loop por cada linha do arquivo
while((linha = bufferedReader.readLine()) != null) {
//
int i= 0, j = 1;
dados = linha.split(";");
estado = dados[i];
pib = Float.parseFloat(dados[j]);
i++;
j++;
quantidade = quantidade + pib;
}
// feche o arquivo
bufferedReader.close();
} catch(FileNotFoundException ex) {
System.out.println("Arquivo inexistente: '" + nomeDoArquivo1 + "'");
} catch(IOException ex) {
System.out.println("Erro lendo o arquivo '" + nomeDoArquivo1 + "'");
}
try {
FileReader fileReader = new FileReader(nomeDoArquivo1);
BufferedReader bufferedReader = new BufferedReader(fileReader);
// loop por cada linha do arquivo
while((linha = bufferedReader.readLine()) != null) {
//
int i= 0, j = 1;
dados = linha.split(";");
estado = dados[i];
pib = Float.parseFloat(dados[j]);
i++;
j++;
Imprimir p = new Imprimir(estado,pib,quantidade);
p.porctotal();
}
// feche o arquivo
bufferedReader.close();
} catch(FileNotFoundException ex) {
System.out.println("Arquivo inexistente: '" + nomeDoArquivo1 + "'");
} catch(IOException ex) {
System.out.println("Erro lendo o arquivo '" + nomeDoArquivo1 + "'");
}
try {
FileReader fileReader = new FileReader(nomeDoArquivo2);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String linha2;
// loop por cada linha do arquivo
while((linha2 = bufferedReader.readLine()) != null) {
//
int i= 0, j = 1;
String[] regiao = linha2.split("\\\\r?\\\\n");
String estados = dados[0];
pib = Float.parseFloat(dados[j]);
System.out.println(regiao);
System.out.println(estados);
j++;
//quantidade = quantidade + pib;
}
// feche o arquivo
bufferedReader.close();
} catch(FileNotFoundException ex) {
System.out.println("Arquivo inexistente: '" + nomeDoArquivo2 + "'");
} catch(IOException ex) {
System.out.println("Erro lendo o arquivo '" + nomeDoArquivo2 + "'");
}
}
}
e a classe:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package ado1;
public class Imprimir {
static void add(Imprimir p) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
public String estado;
public float pib;
public float quantidade;
public float conta;
public Imprimir(String estado, float pib, float quantidade){
this.estado = estado;
this.pib = pib;
this.quantidade = quantidade;
}
public String getEstado() {
return estado;
}
public float getPib() {
return pib;
}
public float conta() {
return (this.pib*100)/this.quantidade;
}
public void porctotal() {
System.out.println (this.estado + " = " + this.pib + " - A porcentagem em relação ao total de " + quantidade + " é = " + conta());
//}
}
}
Mas são sei como fazer a parte b, e acho que estou “perdendo” algo no código que eu fiz.