Exception error when running my code in Java

Asked

Viewed 69 times

-1

The following error appears when I choose the first three options I created in my code:

Exception in thread "main" java.util.Unknownformatconversionexception: Conversion = '2' 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 Contacorrente.main(Contacorrente.java:37)

My code in Java:

import java.util.Scanner;

public class ContaCorrente {
    public static void main(String[] arg) {
        float saldoTotal = 1000;
        int statusAtual;
        int opcaoEscolha;
        
        Scanner input;
        input = new Scanner(System.in);
        
        do {
            System.out.print("Olá! O que você deseja fazer? "
                    + "\n 1 - Realizar o saque "
                    + "\n 2 - Realizar depósito "
                    + "\n 3 - Consultar o saldo "
                    + "\n 4 - Verificar o status da conta"
                    + "\n 5 - Sair \n");
            opcaoEscolha = input.nextInt();
            switch(opcaoEscolha){
            case 1:
                System.out.print("Quantos R$ você deseja sacar? \n");
                float valorSacado = input.nextFloat();
                if(valorSacado > saldoTotal)
                    System.out.print("Saldo insuficiente! \n");
                else {
                    saldoTotal = (valorSacado - saldoTotal); 
                    System.out.printf("O valor retirado foi de R$ %2.f ", valorSacado + "\n");
                    System.out.printf("O valor atual é de R$ %2.f", saldoTotal + "\n");
                }
            case 2:
                System.out.print("Quantos R$ você deseja depositar em sua conta? \n");
                float valorDeposito = input.nextFloat();
                saldoTotal = (valorDeposito + saldoTotal);
                System.out.printf("O seu saldo atual é de R$ %2.f", saldoTotal + "\n");
            case 3:
                System.out.printf("Seu saldo atual é de R$ %2.f", saldoTotal + "\n");
            case 4:
                if(saldoTotal > 1000)
                    System.out.print("A sua conta tem o status de 'Especial', parabéns! \n");
                else {
                    System.out.print("Sua conta possui o status 'normal'. \n");
                }
            case 5:
                System.out.print("Até mais!");
            }
        } while(opcaoEscolha != 5);
    }
}
  • I noticed you don’t use break at the end of each case. You should use it, otherwise the execution continues from one case to another and I don’t think that’s what you want.

  • I put them, but they kept giving the error.

1 answer

0


Are you using printf() wrong.

Change:

System.out.printf("Seu saldo atual é de R$ %2.f", saldoTotal + "\n");

for:

System.out.printf("Seu saldo atual é de R$ %2.f\n", saldoTotal);
  • Thanks! But I still have the problem :/

  • I think the mistake is using %2.f instead of %.2f, I’m not sure. In any case the error is in the way the printf() is being done, study how to use it correctly, for example in the documentation of the method.

  • That’s right, I was missing the %.2f and %d syntax. Thank you very much!!!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.