2017-09-27 15 views
0

Je suis en train de créer un code java de boucle bancaire. J'essaie de demander à l'utilisateur pour combien d'argent ils aimeraient déposer dans leur compte. Je peux le faire fonctionner une fois. Par exemple, ils entreront 20 $ la première fois. Ensuite, ils décideront de mettre 10 $ de plus. Cependant, au lieu d'afficher le solde actuel à 30 $, il n'affiche que celui entré récemment (10 $). Comment puis-je réparer ça?Pourquoi l'argent saisi n'est-il pas incrémenté sur le solde précédent? (en Java)

Voici mon code pour cette partie de la boucle dans le menu qui appelle la classe:

else if(userInput == 3){ 
      Account account = new Account(); 
      System.out.print("\nHow much would you like to deposit?: "); 
      float money = input.nextFloat(); 
      account.deposit(money); 
     } 

Voici le code pour le dépôt qui est appelé:

public void deposit(float money) { 
    if (money < 0) { 
     System.err.println("Error: Can't deposit negative money.\n"); 
     return; 
    } 
    else { 
     currentBalance = money + currentBalance; 
     System.out.println("Current balance: $" + currentBalance + "\n"); 
    } 
} 
+5

'Compte compte = nouveau compte();' Ne pas créer un nouveau compte dans le bloc else if. Cette variable n'est visible que dans le bloc et nulle part ailleurs. En savoir plus sur la portée variable –

+0

Probablement parce qu'il crée une nouvelle instance 'Account' à chaque fois, plutôt que de réutiliser l'instance. –

+0

éviter 'float. utilisez 'double 'sauf si vous savez vraiment que vous avez besoin d'un' float. Cependant, en utilisant un type à virgule flottante pour l'argent est une très mauvaise idée –

Répondre

0

Vous voulez maintenir le solde total jusqu'à présent. Cependant, au moment où vous créez un nouvel objet Account, la balance est initialisée à zéro et perd ainsi le solde précédent. Ce que vous devez faire est de créer un objet compte qu'une seule fois et puis appeler deposit sur le même objet de compte.