Conta Banco [RESOLVIDO]

Bom dia galera…
Estou programando uma aplicação java de uma conta bancária e estou com uma dificuldade. (Sou iniciante)
Criei uma classe Conta com todos os métodos (sacar, depositar, transferir, saldo), depois criei mais duas classes ContaCorrente e ContaInvestimento, as duas herdam da classe Conta. Criei uma outra classe com o nome MenuBanco, com o menu simples solicitando todos os métodos. Como faço para criar um objeto chamando das classes ContaCorrente e ContaInvestimento?

ClasseCorrente cc = new ClasseCorrente();
ClasseInvestimento ci = new ClasseInvestimento();

Qual a dificuldade com isso?

Ele não reconhece, diz que tenho que criar uma variável local…

Posta o código

Essas coisas que eu mostrei são o que, criatura?

Classe Conta

import java.util.Scanner;

public class Conta {

Scanner leia = new Scanner(System.in);
private double saldo;

public double sacar() {
	double valor;
	System.out.println("Valor do saque: ");
	valor = leia.nextDouble();
	System.out.println("Realizando Saque... " + valor);
	return saldo = saldo - valor;
}

public double depositar() {
	double valor;
	System.out.println("Valor do depósito: ");
	valor = leia.nextDouble();
	System.out.println("Realizando Depósito... " + valor);
	return saldo = saldo + valor;
}

public void transferir(Conta c, double valor) {
	System.out.println("Valor da Transferência: ");
	valor = leia.nextDouble();
	System.out.println("Transferindo valor... " + valor);
	System.out.println("Saldo: " + getSaldo());
	sacar();
	c.depositar();
}

public void mostrarSaldo() {
	System.out.println("Saldo: " + getSaldo());
}

public double getSaldo() {
	return saldo;
}

public void setSaldo(double saldo) {
	this.saldo = saldo;
}

}

Classe ContaCorrente

import java.util.Scanner;

public class ContaCorrente extends Conta{
Scanner leia = new Scanner(System.in);
private String titular;
private float cpf;
private double valor;
private double saldo;

public ContaCorrente() {
	System.out.println("Estamos processando sua solicitação!");
	System.out.println("Nome do Titular: ");
	titular = leia.nextLine();
	System.out.println("CPF do Titular: ");
	cpf = leia.nextFloat();
	System.out.println("Valor de depósito inicial: (Mínimo R$ 50,00)");
	valor = leia.nextDouble();
	depositoInicial(valor);
	System.out.println("Bem Vindo(a), " + titular);
	System.out.println("Sua Conta Corrente já está em operação!");
}

public double sacar(double valor) {
	System.out.println("Valor do saque: ");
	valor = leia.nextDouble();
	System.out.println("Realizando Saque... " + valor);
	return saldo = saldo - valor;
}

public double depositar(double valor) {
	System.out.println("Valor do depósito: ");
	valor = leia.nextDouble();
	System.out.println("Realizando Depósito... " + valor);
	return saldo = saldo + valor;
}

public double depositoInicial(double valor) {
	return saldo = saldo + valor;
}

public void transferir(Conta c, double valor) {
	System.out.println("Valor da Transferência: ");
	valor = leia.nextDouble();
	System.out.println("Transferindo valor... " + valor);
	System.out.println("Saldo: " + getSaldo());
	sacar();
	c.depositar();
}

public String getTitular() {
	return titular;
}

public void setTitular(String titular) {
	this.titular = titular;
}

public float getCpf() {
	return cpf;
}

public void setCpf(float cpf) {
	this.cpf = cpf;
}

public double getValor() {
	return valor;
}

public void setValor(double valor) {
	this.valor = valor;
}

public double getSaldo() {
	return saldo;
}

public void setSaldo(double saldo) {
	this.saldo = saldo;
}

}

Classe ContaInvestimento

import java.util.Scanner;

public class ContaInvestimento extends Conta{
Scanner leia = new Scanner(System.in);
private String titular;
private float cpf;
private double valor;
private double saldo;

public ContaInvestimento() {
	System.out.println("Estamos processando sia solicitação!");
	System.out.println("Nome do Titular: ");
	titular = leia.nextLine();
	System.out.println("CPF do Titular: ");
	cpf = leia.nextFloat();
	System.out.println("Valor de depósito inicial: (Mínimo R$ 50,00)");
	valor = leia.nextDouble();
	super.depositar();
	System.out.println("Bem Vindo(a), " + titular);
	System.out.println("Sua Conta Poupança já está em operação!");
}

public double sacar(double valor) {
	System.out.println("Valor do saque: ");
	valor = leia.nextDouble();
	System.out.println("Realizando Saque... " + valor);
	return saldo = saldo - valor;
}

public double depositar(double valor) {
	System.out.println("Valor do depósito: ");
	valor = leia.nextDouble();
	System.out.println("Realizando Depósito... " + valor);
	return saldo = saldo + valor;
}

public void transferir(Conta c, double valor) {
	System.out.println("Valor da Transferência: ");
	valor = leia.nextDouble();
	System.out.println("Transferindo valor... " + valor);
	System.out.println("Saldo: " + getSaldo());
	sacar(valor);
	c.depositar();
}

public double getValor() {
	return valor;
}

public void setValor(double valor) {
	this.valor = valor;
}

public String getTitular() {
	return titular;
}

public void setTitular(String titular) {
	this.titular = titular;
}

public float getCpf() {
	return cpf;
}

public void setCpf(float cpf) {
	this.cpf = cpf;
}

public double getSaldo() {
	return saldo;
}

public void setSaldo(double saldo) {
	this.saldo = saldo;
}

}

Classe MenuBanco

import java.util.Scanner;

public class MenuBanco extends Conta{

Scanner leia = new Scanner(System.in);
int operaid;
char operacao;

public MenuBanco() {
	System.out.println("** BEM VINDO AO BANCO OLIVERWS **");
	System.out.println("");
	System.out.println("|------------ MENU ------------|");
	System.out.println("| 1- CRIAR CONTA               |");
	System.out.println("| 2- CONSULTAR SALDO           |");
	System.out.println("| 3- SAQUE                     |");
	System.out.println("| 4- DEPÓSITO                  |");
	System.out.println("| 5- TRANSFERÊNCIA             |");
	System.out.println("|------------------------------|");
	System.out.println("");
	System.out.printf("Selecione a operação desejada: ");
	operaid = leia.nextInt();

	switch (operaid) {
		case 1:
			menuCriarConta();
			break;
		case 2:
			super.mostrarSaldo();
			break;
		case 3:
			super.sacar();
			break;
		case 4:
			super.depositar();
			break;
		case 5:
		Conta c2 = null;
		super.transferir(c2, 100);
		break;
	}
}

public void menuCriarConta() {
	System.out.println("\n");
	System.out.println("********* CRIAR CONTA *********");
	System.out.println("");
	System.out.println("|------------ MENU ------------|");
	System.out.println("| 1- CONTA CORRENTE            |");
	System.out.println("| 2- CONTA INVESTIMENTO        |");
	System.out.println("| 3- VOLTAR AO MENU            |");
	System.out.println("|------------------------------|");
	System.out.println("");
	System.out.println("Selecione a operação desejada: ");
	operaid = leia.nextInt();
	
	switch (operaid) {
		case 1:
			new ContaCorrente();
			System.out.println("CRIAR CONTA CORRENTE");
			break;
			
		case 2:
			new ContaInvestimento();
			System.out.println("CRIAR CONTA INVESTIMENTO");
			break;
			
		case 3:
			System.out.println("** BEM VINDO AO BANCO OLIVERWS **");
			System.out.println("");
			System.out.println("|------------ MENU ------------|");
			System.out.println("| 1- CRIAR CONTA               |");
			System.out.println("| 2- CONSULTAR SALDO           |");
			System.out.println("| 3- SAQUE                     |");
			System.out.println("| 4- DEPÓSITO                  |");
			System.out.println("| 5- TRANSFERÊNCIA             |");
			System.out.println("|------------------------------|");
			System.out.println("");
			System.out.printf("Selecione a operação desejada: ");
			operaid = leia.nextInt();
			//limpatela();
			break;
	}
}

public static void limpatela() {
	System.out.printf("\n\n\n");
}

}

E onde esta o erro?

Já corrigi o erro cara…
Depois que cria a conta, queria que voltasse para o MenuConta…

return ou break não ajudam?

Mas o método está em outra classe…

Acho que você faltou algumas aulas.
Quando você tem um método, você precisa dizer o que ele retorna. void, caso não retorne nada ou XYZ caso ele retorne XYZ.
Independente do que retorne, se você quer interromper a execução de determinado trecho de código e retornar ao ponto que o invocou, você precisa incluir uma condição de parada. Para métodos, no caso, a palavra reservada return.

public void fazAlgo() {
    //Faz algo
    return;//Para a execução deste método
}

ou

public String fazAlgoString() {
    //Faz algo
    return "blablabla";//Para a execução deste método
}

Acho que vc não entendeu…
Eu estou no método do menu, e chamei o construtor de outra classe, preciso que ele retorne para o método que estava executando…

Não, quem não entendeu foi você.
A função do construtor, como o próprio nome dele diz, deve ser utilizado só para construir e devolver a nova instância do objeto.
Todo o resto deve ser executado por métodos que a classe possua, certo?

Certo…
Mas seguindo o código, ele conclui a execução…
Queria que ele voltasse para o método da outra classe…

Não sei qual a tua dificuldade.
A execução é sequencial, ela obedece a ordem de comandos que você insere, exceto se, encontrar return, break ou exceção.

public void foo() {
    System.out.println("Oi");
    System.out.println("Tudo");
    System.out.println("bem?");
    //Faz algo
    //Faz algo 2
    //Faz algo 3
    Classe classe = new Classe();
    classe.executaUmMetodoQualquer();
   System.out.println("Fui");
}

O método acima vai executar cada linha, até imprimir fui, exceto se houver erros.

Pro menu ficar voltando é melhor usar um do while ou até um while.
E o texto do menu fica num método e não em um construtor.
Da pra fazer com o menu no construtor, só que o construtor não serve pra isso/não é a maneira correta.

Entendi Mike…
Muito obrigado…
Já consegui fazer aqui justamente dessa forma e deu certo…
Obrigado pela atenção parceiro…

:+1:
Que bom que deu certo!

1 curtida