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

Problema de compilação ao usar o Scanner

Bom dia equipe da Alura, no curso Java parte 2, resolvi inovar o projeto que fizemos com o Paulo do ByteBank, e estou desenvolvendo um menu de interação e estou utilizando para obter as respostas do usuário o Scanner, observem o código abaixo:

import java.util.Scanner;

public class Interação {

    static Scanner leitor = new Scanner(System.in);

    public static void main(String[] args) {

        new Interação();

    }

    public Interação() {

        Conta conta = new Conta(1280,72098);
        conta.depositar(2800);

        System.out.println("O que deseja fazer?");
        System.out.println("---");
        System.out.println("(1) Sacar");
        System.out.println("(2) Depositar");
        System.out.println("(3) Transferir");
        System.out.println("(4) Saldo");
        System.out.println("(5) Sair");
        int desejo = leitor.nextInt();

        if(desejo == 1) {
            System.out.println("Quanto você quer sacar?");
            int valorSaque = leitor.nextInt();
            conta.sacar(valorSaque);
        } 

        else if(desejo == 2) {
            System.out.println("Quanto você quer depositar?");
            int valorDeposito = leitor.nextInt();
            conta.depositar(valorDeposito);
        }

        else if(desejo == 3) {
            System.out.println("Quanto você quer transferir?");
            double valorTrans = leitor.nextInt();
            System.out.println("Para quem você vai transferir?");
            Conta destinatario = leitor.next(); <---
            conta.transferir(valorTrans, destinatario);
        }

        else if(desejo == 4){
            System.out.println("Seu saldo atual: R$" + conta.getSaldo());
        }

        else if(desejo == 5) {
            System.out.println("Você escolheu sair, desconectando...");
        } 

        else {
            System.out.println("Digite um número válido!");
        }

    }

}

O meu problema é com a transferência, pois para realizar uma transferência é necessário informar a variável Conta (mostrar o destinatário), mas o Scanner não compila objetos.

Poderiam me ajudar a solucionar este problema?

2 respostas
solução!

Fala Kleverson.

Nesse caso você poderia usar o scanner para setar por exemplo, o nome do destinatário como uma String e depois, já com o destinatário preenchido você atribuiria ao objeto Conta.

Assim:

// ----- código omitido ------
System.out.println("Para quem você vai transferir?");
String destinatario = leitor.next();
conta.transferir(valorTrans, destinatario);

Se não funcionar assim, posta a sua classe Conta, por favor. E uma sugestão, evite usar caracteres do tipo: ç ã à á. Na construção do seu programa... Isso evita alguns problemas com o compilado. Sua classe Interação poderia ser Interacao.

Precisa passar os parâmetros

import java.util.Scanner;

public class Interacao {

    static Scanner leitor = new Scanner(System.in);

    public static void main(String[] args) {

        new Interacao();

    }

    public Interacao() {

        Conta conta = new Conta(1280,72098);
        conta.depositar(2800);

        System.out.println("O que deseja fazer?");
        System.out.println("---");
        System.out.println("(1) Sacar");
        System.out.println("(2) Depositar");
        System.out.println("(3) Transferir");
        System.out.println("(4) Saldo");
        System.out.println("(5) Sair");
        int desejo = leitor.nextInt();

        if(desejo == 1) {
            System.out.println("Quanto você quer sacar?");
            int valorSaque = leitor.nextInt();
            conta.sacar(valorSaque);
        } 

        else if(desejo == 2) {
            System.out.println("Quanto você quer depositar?");
            int valorDeposito = leitor.nextInt();
            conta.depositar(valorDeposito);
        }

        else if(desejo == 3) {
            System.out.println("Quanto você quer transferir?");
            double valorTrans = leitor.nextInt();
            System.out.println("Para quem você vai transferir?");
            System.out.println("Agencia: ");
            int agencia = leitor.nextInt();
            System.out.println("Numero: ");
            int numero = leitor.nextInt();
            Conta destinatario = new Conta(agencia, numero);
            conta.transferir(valorTrans, destinatario);
            System.out.println(conta.getSaldo());

        }

        else if(desejo == 4){
            System.out.println("Seu saldo atual: R$" + conta.getSaldo());
        }

        else if(desejo == 5) {
            System.out.println("Você escolheu sair, desconectando...");
        } 

        else {
            System.out.println("Digite um número válido!");
        }

    }

}