Pessoal, eu criei um package através do netbeans com o seguinte caminho com\deitel\jhtp6\ch14… dentro dele inclui a seguinte classe:
package com.deitel.jhtp6.ch14; // empacotada para reutilização
public class AccountRecord
{
private int account;
private String firstName;
private String lastName;
private double balance;
// construtor sem argumentos chama outro construtor com valores-padrão
public AccountRecord()
{
this(0, "", "", 0.0);
}
// inicializa um registro
public AccountRecord(int acct, String first, String last, double bal)
{
setAccount(acct);
setFirstName(first);
setLastName(last);
setBalance(bal);
}
// configura o número de conta
public void setAccount(int acct)
{
System.out.println("Essa frase verifica se o método esta funcionado!!!"); // Aqui esta a frase teste!!!! Mas que na verdade não exibe a frase!!!
account = acct;
}
public int getAccount()
{
return(account);
}
// configura o nome
public void setFirstName(String first)
{
firstName = first;
}
public String getFirstName()
{
return(firstName);
}
// configura o sobrenome
public void setLastName(String last)
{
lastName = last;
}
public String getLastName()
{
return(lastName);
}
// configura o saldo
public void setBalance(double bal)
{
balance = bal;
}
public double getBalance()
{
return(balance);
}
}
aparentemente não houve nenhuma indicação de erro pelo netbeans…
ae, eu uso essa classe nessa outra aqui:
import java.io.FileNotFoundException;
import java.lang.SecurityException;
import java.util.Formatter;
import java.util.FormatterClosedException;
import java.util.NoSuchElementException;
import java.util.Scanner;
import com.deitel.jhtp6.ch14.AccountRecord;
public class CreateTextFileb
{
private Formatter output; // objeto utilizado para gerar
// permite ao usuário abrir o arquivo
public void openFile()
{
try
{
output = new Formatter("clients.txt");
}
catch(SecurityException securityException)
{
System.err.println("Você não tem acesso a escrita nesse arquivo");
System.exit(1);
}
catch(FileNotFoundException filesNotFoundException)
{
System.err.println("Erro ao criar o arquivo");
System.exit(1);
}
}
// adiciona registros ao arquivo
public void addRecords()
{
// objeto a ser gravdo no arquivo
AccountRecord record = new AccountRecord();
Scanner input = new Scanner(System.in);
System.out.printf("%s\n%s\n%s\n%s\n\n",
"To terminate input, type the ebd-of-file indicator",
"when you are prompted to enter input.",
"On UNIX/Linux/Mac OS X type <ctrl> d then press Enter",
"On Windows type <ctrl> z then press Enter");
System.out.printf("%s\n%s", "Enter account number (>0), fisrt name, last name and balance.",
"?");
while(input.hasNext()) // faz um loop até o indicator de fim de arquivo
{
try // gera saída dos valores para o arquivo
{
// recupera os dados para saída
record.setAccount(input.nextInt());
record.setFirstName(input.next());
record.setLastName(input.next());
record.setBalance(input.nextDouble());
if(record.getAccount() > 0)
{
// grava um novo registro
output.format("%d %s %s %.2f\n", record.getAccount(),
record.getFirstName(), record.getLastName(),
record.getBalance());
}
else
{
System.out.println("Numero da conta deve ser maior do que 0");
}
}
catch(FormatterClosedException formatterClosedException)
{
System.err.println("Erro ao escrever no arquivo");
return;
}
catch(NoSuchElementException elementException)
{
System.err.println("Entrada invalida. Por favor tente de novo.");
input.nextLine();
}
System.out.printf("%s %s\n%s", "Entre o numero da conta (>0)",
"first name, last name and balance.", "? ");
}
}
// fecha o arquivo
public void closeFile()
{
if(output != null)
{
output.close();
}
}
}
Acontece que quando eu rodo o aplicativo, o arquivo “clients.txt” até é criado, mas não é gravado absolutamente nada dentro. Eu coloquei uma frase de teste dentro de um dos métodos da classe AccountRecord e verifiquei que essa frase não é exibida, o que me leva a pensar que o método tb não esta funcionando. Estou crendo que o problema esta na empacotação, mas não consigo saber como? Algúem consegue ver algum erro sutil na empacotação ou em outra parte???