Bom tarde galera!
Meu problema é o seguinte… estou criando um pequeno programa para armazenar pontos em um plano cartesiano, que primeiramente deve ser armazenado em um vetor, e a após fecha-lo, armazenar em um aquivo .txt.
O meu problema é que quando eu saio do programa duas linhas em branco são add ao aquivo .txt, e quando vou iniciar o programa novamente para carregar o conteúdo a seguinte mensagem aparece:
“Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 1
at brain.util.Ponto.(Ponto.java:24)
at planocartesiano.PlanoCartesianoDAO.recovery(PlanoCartesianoDAO.java:28)
at planocartesiano.ViewPlanoCartesiano.main(ViewPlanoCartesiano.java:13)
Java Result: 1”
Segue arquivo de visualizacao:
package planocartesiano;
import brain.util.Entrada;
import brain.util.Ponto;
public class ViewPlanoCartesiano {
public static void main(String[] args) {
char opção = ' ';
String menu;
ColeçãoDePontos colecao = new PlanoCartesianoDAO().recovery();
menu = "[1] Cadastrar\n"
+ "[2] Excluir\n"
+ "[3] Editar\n"
+ "[4] Consultar \n"
+ "[5] Listar \n"
+ "[6] Sair do sistema";
while (opção != '6') {
opção = Entrada.leiaChar("MENU" + "\n\n" + menu);
if (opção == '1') {
new ColeçãoDePontos().addPonto(new Ponto(Entrada.leiaString("Informe o nome que deseja utilizar:"), Entrada.leiaDouble("Informe a coordenada X:"), Entrada.leiaDouble("Informe a coordenada Y:")));
}
if (opção == '2') {
}
if (opção == '3') {
}
if (opção == '4') {
System.out.println("-------------------------------------");
System.out.printf("%-10s | %-12s | %-12s |\n", "Nome", "Coordenada X", "Coordenada Y");
}
if (opção == '5') {
System.out.println("-------------------------------------");
System.out.printf("%-10s | %-12s | %-12s |\n", "Nome", "Coordenada X", "Coordenada Y");
System.out.println(colecao.getListaDePontos());
}
}
PlanoCartesianoDAO.create(colecao);
}
}
Classe ColecaoDePontos:
package planocartesiano;
import brain.util.Ponto;
import java.util.ArrayList;
public class ColeçãoDePontos {
private ArrayList<Ponto> colecao = new ArrayList<>();
public ColeçãoDePontos() {
}
public ArrayList<Ponto> getColecao() {
return colecao;
}
public void addPonto(Ponto p) {
if (buscarPorNome(p.getNome()) == null) {
this.colecao.add(p);
}
}
public Ponto buscarPorNome(String nome) {
Ponto aux = null;
for (Ponto pnt : colecao) {
if (pnt.getNome().equals(nome)) {
aux = pnt;
}
}
return aux;
}
public String getListaDePontos() {
String result = "";
for (Ponto pnt : colecao) {
result += String.format("%-10s | %-12s | %-12s |\n", pnt.getNome(), pnt.obterX(), pnt.obterY());
}
return result;
}
public String toString() {
String result = "";
for (Ponto pnt : colecao) {
result += pnt.toString() + "\n";
}
return result;
}
}
E o classe DAO:
package planocartesiano;
import brain.util.Arquivo;
import brain.util.Ponto;
public class PlanoCartesianoDAO {
public static void create(ColeçãoDePontos colecao) {
Arquivo arq = new Arquivo("dados.txt");
// salvar
if (arq.abrirEscrita()) {
arq.escreverLinha(colecao.toString());
arq.fecharArquivo();
}
}
public ColeçãoDePontos recovery() {
ColeçãoDePontos formas = new ColeçãoDePontos();
Arquivo arq = new Arquivo("dados.txt");
// carregar os contatos
if (arq.abrirLeitura()) {
String linha = "";
while ((linha = arq.lerLinha()) != null) {
formas.addPonto(new Ponto(linha));
}
arq.fecharArquivo();
}
return formas;
}
public void update(ColeçãoDePontos coleção) {
// salvar a agenda
// em qualquer lugar
}
public void delete(ColeçãoDePontos coleção) {
//
}
}