2013-10-09 6 views
7

Я работаю над созданием программы для имитации банковских транзакций. Я должен спросить у пользователя, хотят ли они внести депозит, снятие или передачу.Программа банковского счета

Когда я ввожу определенную сумму (например, 1000), он говорит, что мой баланс равен 1000. Затем я прошу снять номер, равный 400, в котором говорится, что мой баланс равен -400. В конце концов, что я подумал, что я должен проверить свой баланс, а затем он даст мне правильный баланс того, что должно быть 600, но он говорит 0. Например, посмотреть расшифровку:

screen capture of output

Я был потому что в моем коде (показан ниже) я сделал баланс = 0, но если я уберу = 0 и попробую запустить программу, он говорит, что ее нужно инициализировать.

Я застреваю, и я хочу понять это. Пожалуйста, не отправляйте весь исправленный код. Я хочу исправить это и научиться!

import java.util.Scanner; 

public class BankTransactions { 


    public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in); 
     int num; 

     do { 

      double balance = 0; 
      double amount; 

      System.out.println("Type Number"); 
      System.out.println("1. Deposit"); 
      System.out.println("2. Withdrawal"); 
      System.out.println("3. Balance"); 
      System.out.println("4. Exit"); 
      num = scan.nextInt(); 

      if (num == 1) { 
       System.out.println("Enter amount to deposit: "); 
       amount = scan.nextDouble(); 

       // Add the amount to the balance 
       balance += amount; 
       System.out.println("Your balance is"); 
       System.out.println(balance); 


      } else if (num == 2) { 

       System.out.println("Enter amount to withdrawal: "); 
       amount = scan.nextDouble(); 

       // Remove the amount from the balance 
       balance -= amount; 
       System.out.println("Your balance is"); 
       System.out.println(balance); 

      } else if (num == 3) { 


       System.out.println("Your Balance"); 
       System.out.println(balance); 

      } 



     } while (num != 4); 

     System.out.println("Good Bye!"); 

    } 
} 
+8

Никогда не используйте плавающими типы для представления валюты: http://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent -валюта –

ответ

10

Каждый раз, когда выполняется {...} while {...}, вы устанавливаете баланс = 0. Вы должны вынуть петлю.

double balance = 0; 

do{ 
... 
+1

+1 избили меня до этого – sameday

+0

Благодарим за помощь! Я знал, что это будет незначительный msitake – Morgan

3

Вы инициализируете баланс до 0 в цикле do, поэтому каждый раз он сбрасывается на ноль.

Переместить линейный баланс = 0 в положение над циклом while.

3

Каждый раз, когда вы запускаете цикл, вы устанавливаете balance в 0. Переместить это за пределами do цикла:

double balance = 0; 
double amount; 
do { 
    /* code */ 
} while(num != 4); 
Смежные вопросы