数组银行系统:转移价值的问题
Array bank system: issue with transferring a value
我是初学者 Java class。我正在尝试实现一种将值转移到另一个帐户的方法。我不知道该怎么做。到目前为止,我的代码如下:
Conta.java:
package br.com.banco;
class Conta {
private int numeroConta;
private String nome;
private double saldo;
private static int numeroDeContas = 0;
// getters and setters
public int getNumeroConta() {
return numeroConta;
}
public void setNumeroConta(int numeroConta) {
this.numeroConta = numeroConta;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public double getSaldo() {
return saldo;
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
public String informacaoConta() {
return "Número da conta: " + numeroConta + "\nNome do Cliente: "
+ nome + "\nSaldo:" + saldo + "\n";
}
public Conta(String abc, double xyz) {
nome = abc;
saldo = xyz;
numeroDeContas++;
numeroConta = numeroDeContas;
}
public void deposito(double valor) {
if (valor <= 0) {
System.out.println("O valor precisa ser positivo");
} else {
saldo = saldo + valor;
}
}
public void retirar(double valor) {
if (valor <= 0) {
System.out.println("O valor precisa ser positivo");
} else {
if (saldo < valor) {
System.out.println("Valor insuficiente");
} else {
saldo = saldo - valor;
}
}
}
public void transfere() {
// I need help with this
}
}
Banco.java:
package br.com.banco;
class Banco {
private Conta[] contas;
private int numContas;
public Banco() {
contas = new Conta[100];
numContas = 0;
}
public int abrirConta(String nome, double saldoInicial) {
Conta c = new Conta(nome, saldoInicial);
contas[numContas] = c;
numContas++;
return c.getNumeroConta();
}
public void retirarDe(int numeroConta, double valor) {
for (int i = 0; i < numContas; i++) {
if (numeroConta == contas[i].getNumeroConta()) {
contas[i].retirar(valor);
System.out.println("Valor retirado com sucesso");
return;
}
}
System.out.println("Número de conta inválido.");
}
public void depositaEm(int numeroConta, double valor) {
for (int i = 0; i < numContas; i++) {
if (numeroConta == contas[i].getNumeroConta()) {
contas[i].deposito(valor);
System.out.println("Valor retirado com sucesso");
return;
}
}
System.out.println("Número de conta inválido.");
}
public void Transferir() {
System.out.println("Número de conta inválido.");
}
public void mostrarInformacaoConta(int numeroConta) {
for (int i = 0; i < numContas; i++) {
if (numeroConta == contas[i].getNumeroConta()) {
System.out.println(contas[i].informacaoConta());
return;
}
}
System.out.println("Número de conta inválido.");
}
}
Sistema.java:
package br.com.banco;
import java.util.Scanner;
public class Sistema {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
Banco meuBanco = new Banco();
int opcao;
do {
// display menu to user
// ask user for their choice and validate it (make sure it is between 1 and 6)
System.out.println();
System.out.println("1) Abrir uma nova conta");
System.out.println("2) Depositar");
System.out.println("3) Sacar");
System.out.println("4) Transferir");
System.out.println("5) Saldo");
System.out.println("6) Sair");
System.out.println();
System.out.print("Escolha uma opção [1-6]: ");
opcao = s.nextInt();
switch (opcao) {
case 1:
System.out.println("Digite seu nome");
String cn = s.next();
System.out.println("Digite o saldo inicial da conta");
double d = s.nextDouble();
System.out.println("Conta criada com sucesso, o número da conta é: " + meuBanco.abrirConta(cn, d));
break;
case 2:
System.out.println("Digite o número da conta");
int an = s.nextInt();
System.out.println("Digite um valor para depositar");
double da = s.nextDouble();
meuBanco.depositaEm(an, da);
break;
case 3:
System.out.println("Digite o número da conta");
int acn = s.nextInt();
System.out.println("Digite um valor para sacar");
double wa = s.nextDouble();
meuBanco.retirarDe(acn, wa);
break;
case 4:
case 5:
System.out.println("Digite o número da conta");
int anum = s.nextInt();
meuBanco.mostrarInformacaoConta(anum);
break;
// case 5: ... break;
}
}
while (opcao != '6');
}
}
我会把你的方法 transferir
写在 class Banco
中,这样它就可以使用方法 retirarDe
和 depositaEm
。毕竟,转账实际上只是从一个账户中取款,并将相同金额的资金存入另一个账户。
这样,您的 class Conta
中甚至不需要 class transfere
。但是,您必须重写 class Conta
中的方法 retire
和 Banco
中的 retirarDe
以便它们都 returns 一个布尔值 - true
如果余额足够并且提款成功,false
如果没有,下面的代码可以工作。
class中的方法transferir
Banco
:
public void transferir(int numeroContaDe, int numeroContaA, double valor)
{
bool suficiente = RetirarDe(numeroContaDe, valor);
if (suficiente) {
DepositaEm(numeroContaA, valor);
}
}
在 class Conta
中重写您的方法 retirar
,如下所示:
public bool retirar(double valor)
{
if (valor <= 0) {
System.out.println("O valor precisa ser positivo");
}
else {
if (saldo < valor) {
System.out.println("Valor insuficiente");
}
else {
saldo -= valor;
return true;
}
return false;
}
}
并重写 Banco
中的方法 retirarDe
如下:
public bool retirarDe(int numeroConta, double valor) {
for (int i =0; i<numContas; i++) {
if (numeroConta == contas[i].getNumeroConta()) {
bool suficiente = contas[i].retirar(valor);
if (suficiente) {
System.out.println("Valor retirado com sucesso");
}
else
{
System.out.println("Salido insuficiente");
}
return suficiente;
}
}
System.out.println("Número de conta inválido.");
}
我是初学者 Java class。我正在尝试实现一种将值转移到另一个帐户的方法。我不知道该怎么做。到目前为止,我的代码如下:
Conta.java:
package br.com.banco;
class Conta {
private int numeroConta;
private String nome;
private double saldo;
private static int numeroDeContas = 0;
// getters and setters
public int getNumeroConta() {
return numeroConta;
}
public void setNumeroConta(int numeroConta) {
this.numeroConta = numeroConta;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public double getSaldo() {
return saldo;
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
public String informacaoConta() {
return "Número da conta: " + numeroConta + "\nNome do Cliente: "
+ nome + "\nSaldo:" + saldo + "\n";
}
public Conta(String abc, double xyz) {
nome = abc;
saldo = xyz;
numeroDeContas++;
numeroConta = numeroDeContas;
}
public void deposito(double valor) {
if (valor <= 0) {
System.out.println("O valor precisa ser positivo");
} else {
saldo = saldo + valor;
}
}
public void retirar(double valor) {
if (valor <= 0) {
System.out.println("O valor precisa ser positivo");
} else {
if (saldo < valor) {
System.out.println("Valor insuficiente");
} else {
saldo = saldo - valor;
}
}
}
public void transfere() {
// I need help with this
}
}
Banco.java:
package br.com.banco;
class Banco {
private Conta[] contas;
private int numContas;
public Banco() {
contas = new Conta[100];
numContas = 0;
}
public int abrirConta(String nome, double saldoInicial) {
Conta c = new Conta(nome, saldoInicial);
contas[numContas] = c;
numContas++;
return c.getNumeroConta();
}
public void retirarDe(int numeroConta, double valor) {
for (int i = 0; i < numContas; i++) {
if (numeroConta == contas[i].getNumeroConta()) {
contas[i].retirar(valor);
System.out.println("Valor retirado com sucesso");
return;
}
}
System.out.println("Número de conta inválido.");
}
public void depositaEm(int numeroConta, double valor) {
for (int i = 0; i < numContas; i++) {
if (numeroConta == contas[i].getNumeroConta()) {
contas[i].deposito(valor);
System.out.println("Valor retirado com sucesso");
return;
}
}
System.out.println("Número de conta inválido.");
}
public void Transferir() {
System.out.println("Número de conta inválido.");
}
public void mostrarInformacaoConta(int numeroConta) {
for (int i = 0; i < numContas; i++) {
if (numeroConta == contas[i].getNumeroConta()) {
System.out.println(contas[i].informacaoConta());
return;
}
}
System.out.println("Número de conta inválido.");
}
}
Sistema.java:
package br.com.banco;
import java.util.Scanner;
public class Sistema {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
Banco meuBanco = new Banco();
int opcao;
do {
// display menu to user
// ask user for their choice and validate it (make sure it is between 1 and 6)
System.out.println();
System.out.println("1) Abrir uma nova conta");
System.out.println("2) Depositar");
System.out.println("3) Sacar");
System.out.println("4) Transferir");
System.out.println("5) Saldo");
System.out.println("6) Sair");
System.out.println();
System.out.print("Escolha uma opção [1-6]: ");
opcao = s.nextInt();
switch (opcao) {
case 1:
System.out.println("Digite seu nome");
String cn = s.next();
System.out.println("Digite o saldo inicial da conta");
double d = s.nextDouble();
System.out.println("Conta criada com sucesso, o número da conta é: " + meuBanco.abrirConta(cn, d));
break;
case 2:
System.out.println("Digite o número da conta");
int an = s.nextInt();
System.out.println("Digite um valor para depositar");
double da = s.nextDouble();
meuBanco.depositaEm(an, da);
break;
case 3:
System.out.println("Digite o número da conta");
int acn = s.nextInt();
System.out.println("Digite um valor para sacar");
double wa = s.nextDouble();
meuBanco.retirarDe(acn, wa);
break;
case 4:
case 5:
System.out.println("Digite o número da conta");
int anum = s.nextInt();
meuBanco.mostrarInformacaoConta(anum);
break;
// case 5: ... break;
}
}
while (opcao != '6');
}
}
我会把你的方法 transferir
写在 class Banco
中,这样它就可以使用方法 retirarDe
和 depositaEm
。毕竟,转账实际上只是从一个账户中取款,并将相同金额的资金存入另一个账户。
这样,您的 class Conta
中甚至不需要 class transfere
。但是,您必须重写 class Conta
中的方法 retire
和 Banco
中的 retirarDe
以便它们都 returns 一个布尔值 - true
如果余额足够并且提款成功,false
如果没有,下面的代码可以工作。
class中的方法transferir
Banco
:
public void transferir(int numeroContaDe, int numeroContaA, double valor)
{
bool suficiente = RetirarDe(numeroContaDe, valor);
if (suficiente) {
DepositaEm(numeroContaA, valor);
}
}
在 class Conta
中重写您的方法 retirar
,如下所示:
public bool retirar(double valor)
{
if (valor <= 0) {
System.out.println("O valor precisa ser positivo");
}
else {
if (saldo < valor) {
System.out.println("Valor insuficiente");
}
else {
saldo -= valor;
return true;
}
return false;
}
}
并重写 Banco
中的方法 retirarDe
如下:
public bool retirarDe(int numeroConta, double valor) {
for (int i =0; i<numContas; i++) {
if (numeroConta == contas[i].getNumeroConta()) {
bool suficiente = contas[i].retirar(valor);
if (suficiente) {
System.out.println("Valor retirado com sucesso");
}
else
{
System.out.println("Salido insuficiente");
}
return suficiente;
}
}
System.out.println("Número de conta inválido.");
}