Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Olá. Modifiquei o código visto em aula utilizando a classe Scanner mas o código não executa. Aparece um erro quando eu defino o Scanner leitura. Alguém poderia me ajudar?

import java.util.Scanner;
class CriaConta {

    public static void main(String[] args) {
        boolean StatusTransferencia;
        String Validação;
        int Operação;
        double Valor;
        Conta PrimeiraConta = new Conta();
        Conta SegundaConta = new Conta();
        Scanner leitura = new Scanner(System.in);
        System.out.println("Bem Vindo ao Banco do Birosca.");
        System.out.println("Deseja fazer alguma operação? (Digite: Sim ou Não)");
        Validação= leitura.nextLine();
        while((Validação == "Sim") || (Validação == "sim") ) {
            System.out.println("Digite a operação?");
            System.out.println("1-Saque");
            System.out.println("2-Deposito");
            System.out.println("3-Transferencia");
            Operação= leitura.nextInt();
            switch( Operação )
            {
                case 1:
                    System.out.println("Digite o valor a ser sacado:");
                    Valor=leitura.nextDouble();
                    StatusTransferencia = PrimeiraConta.saque(Valor);
                    if(StatusTransferencia == true) {
                        System.out.println("Seu saldo é "+ PrimeiraConta.saldo + " reais.");
                        }
                    else {
                        System.out.println("Operação não realizada. Seu saldo é de "+ PrimeiraConta.saldo + " reais.");
                    }
                        break;

                case 2:
                    System.out.println("Digite o valor a ser depositado:");
                    Valor=leitura.nextDouble();
                    PrimeiraConta.deposita(Valor);
                        break;

                case 3:
                    System.out.println("Digite o valor a ser transferido:");
                    Valor=leitura.nextDouble();    
                    PrimeiraConta.transfere(Valor, SegundaConta);
                        break;

                default:
                        System.out.println("Opção Inválida");
                        System.out.println("Digite a operação?");
                        System.out.println("1-Saque");
                        System.out.println("2-Deposito");
                        System.out.println("3-Transferencia");
                        Operação= leitura.nextInt();
            }
            System.out.println("Deseja fazer alguma operação? (Digite: Sim ou Não");
            Validação= leitura.nextLine();
        }
}
}
3 respostas
solução!

Olá amigo, creio que o erro seja no nextLine().

Tente utilizar apenas next() para String.

Reparei outros problemas no código que é o uso de caracteres especiais para nomear variáveis.

Dê uma olhadinha nas variáveis: Validação e Operação. Troque por validacao e operacao. Por convenção e boas práticas é utilizado variáveis com camelCase, ou seja, começa sempre por letra minúscula e se for uma palavra composta, a segunda palavra começa com maiúscula, então fica assim: palavraComposta.

Outro problema:

a classe CriaConta está certinha, porém você cria o construtor assim Conta PrimeiraConta = new Conta(); Se a classe é CriaConta, o certo seria CriaConta primeiraConta = new CriaConta();

Outro probleminha é que quando você declara a classe, vc já inicia o main. O escopo do programa deve ser assim: class CriaConta{ //aqui você escreve os atributos e métodos } public static void main(String args[]){ aqui vc pode chamar o construtor da classe CriaConta, assim primeiraConta = new CriaConta(); }

Espero ter ajudado, uma última dica, tenta desenvolver seus projetos aos poucos e sempre testando, pois quando o código está desse tamanho fica mais difícil achar os erros. "Dividir para conquistar"

Muito obrigado pela ajuda e pelas dicas.

Oi. Também vi que o while faz o teste de comparação da String validacao usando o operador ==. O operador == não funciona para comparar String, somente em tipos primitivos. O correto é:

String validacao = leitura.nextLine();
        while (validacao.toLowerCase().equals("sim")){
            //códigos
        }