Eu comprei o Llivro Java como programar dos Deitel. no capítulo 3 eles apresentam um exemplo de umpequeno programa de controle de conta bancária com o seguinte código:
[color=green]
// Fig. 3.14: AccountTest.java
// Cria e manipula um objeto Account
import java.util.Scanner;
public class AccountTest
{
// método principal inicia a execução do aplicativo Java
public static void main( String args[] )
{
Account account1 = new Account( 50.00 ); // cria o objeto Account
Account account2 = new Account( -7.53 ); // cria o objeto Account
// exibe saldo inicial de cada objeto
System.out.printf( "account1 balance: $%.2f\n",
account1.getBalance() );
System.out.printf( "account2 balance: $%.2f\n\n",
account2.getBalance() );
// cria Scanner para obter entrada a partir da janela de comando
Scanner input = new Scanner( System.in );
double depositAmount; // quantia de depósito lida do usuário
System.out.print( "Enter deposit for account1: " ); // prompt
depositAmount = input.nextDouble(); // obtém a entrada do usuário
System.out.printf( "\nadding %2.f to account1 balance\n\n",
depositAmount );
account1.credit( depositAmount ); // adiciona o saldo de account1
// exibe os saldos
System.out.printf( "account1 balance: $%.2f\n",
account1.getBalance() );
System.out.printf( "account2 balance: $%.2f\n\n",
account2.getBalance() );
System.out.print( "Enter deposit amount for account2: " ); // prompt
depositAmount = input.nextDouble(); // obtém a entrada do usuário
System.out.printf( "\nadding %.2f to account2 balance\n\n",
depositAmount );
account2.credit( depositAmount ); // adiciona ao saldo de account
// exibe os saldos
System.out.printf( "account1 balance: $%.2f\n",
account1.getBalance() );
System.out.printf( "account2 balance: $%.2f\n",
account2.getBalance() );
} // fim de main
} // fim da classe AccountTest
// Fig. 3.13: Account.java
// Classe Account com um construtor para
// inicializar a variável de instância balance
public class Account
{
private double balance; // variável de instância que armazena o saldo
// construtor
public Account( double initialBalance )
{
// valida que initialBalance é maior que 0.0
// se não, o saldo é inicializado como o valor padrão 0.0
if ( initialBalance > 0.0 )
balance = initialBalance;
} // fimdo contrutor Account
// credita (adiciona) uma quantia à conta
public void credit( double amount )
{
balance = balance + amount; // adiciona quantia ao saldo
} // fim do método credit
// retorna o saldo da conta
public double getBalance()
{
return balance; // fornece o valor de saldo ao método chamador
} // fim do método getBalance
} // fim da classe Account[/color]
Quando eu mando compilar ele funciona sem problema algum. Mas quando eu executo o programa e digito algum valor ponto flutuanate ele me dá uma mensagem de erro:
Enter deposit for account1: 25,36
Exception in thread “main” java.util.UnknownFormatConversionException: Conversion = ‘3’
at java.util.Formatter.checkText(Unknown Source)
at java.util.Formatter.parse(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.io.PrintStream.format(Unknown Source)
at java.io.PrintStream.printf(Unknown Source)
at AccountTest.main(AccountTest.java:25)