2014-12-19 2 views
0

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

В цикле пользователю предлагается ввести сумму (положительную для депозита и отрицательную для вывода). Сумма должна быть добавлена ​​/ вычтена из переменной баланса счета. Все депозиты/выписки сохраняются как история, чтобы мы могли ее распечатать позже. Когда пользователь хочет выйти из цикла, должен быть напечатан текущий баланс учетной записи вместе с историей учетной записи (из массива/ArrayList).

Теперь я хочу использовать массив с десятью слотами для функции истории.

Мой вопрос, как я могу следить за весь депозит, снять и сальдо счетов текущих операций (с использованием массива с десятью слотами для функции истории), так что я могу распечатать его, когда пользователь выходит из программа?

Мой код:

BankApp класс:

package bankapp; 

import java.util.Scanner; 

public class BankApp { 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 
     askingUser au = new askingUser(); 

     System.out.println("WELCOME TO OUR BANK!\nYou have 100 SEK by default in your account."); 

     while (true) { 

      au.userInput(); 

      System.out.println("Do you want to continue? Answer by Yes or No."); 
      String yesOrNo = input.next(); 

      if (yesOrNo.equalsIgnoreCase("yes")) { 

       au.userInput(); 

      } else if (yesOrNo.equalsIgnoreCase("no")) { 
       System.out.println("History: "); 

       //print out the transaction history 
       System.exit(0); 

      } else { 

       System.out.println("Invalid character input."); 

      } 

     } 

    } 
} 

класс askingUser:

package bankapp; 

import java.util.Scanner; 

public class askingUser { 

    Scanner input = new Scanner(System.in); 
    double initialBal = 100; 

    public void userInput() { 
     System.out.println("Enter your amount: (+ve for deposit & -ve for withdraw)"); 
     double inputAmount = input.nextDouble(); 

     if (inputAmount >= 0) { 

      double newPosAm = initialBal + inputAmount; 
      System.out.println("Your current balance is: " + newPosAm + " SEK"); 

     } else { 

      double newNegAm = initialBal + inputAmount; 
      System.out.println("Your current balace is: " + newNegAm + " SEK"); 
     } 

    } 

} 
+0

Массив будет плохой идеей, так как вам нужно «запомнить», какой индекс является самым новым, и затем нужно проанализировать этот массив в обратном порядке. Возможно, лучше использовать 'ArrayList' и вставить самые новые записи в индекс' 0'. Затем вы можете удалить записи с номерами индексов> 10. – Tom

+0

Хорошая идея, вот что я думал. ArrayList может быть лучше. – Simon

ответ

1

Если вы используете массив, вы должны следить за количеством элементов хранящегося внутри и изменить размер массива, когда это необходимо. Самый простой способ - сохранить историю как строки в ArrayList. Вы бы добавить одно сообщение к этому списку за транзакцию:

ArrayList<String> history = new ArrayList<String>(); 

void addToHistory(String transaction) { 
    history.add(transaction); 
} 

void printHistory() { 
    for(String s : history) { 
     System.out.println(s); 
    } 
} 

addToHistory("Withdrawal: 100 SEK"); 
addToHistory("Deposit: 200 SEK"); 
printHistory(); 
+0

Это все еще неясно. Потому что пользователь вводит количество несколько раз. И каждая введенная сумма должна быть добавлена ​​в список массива. Это означает, что история должна добавляться автоматически и динамически. Это был главный вопрос. Так что, пожалуйста, измените код, чтобы показать мне правильный путь. Я не заставляю вас это делать, это зависит от вас. Спасибо. – Simon

+1

Вам просто нужно называть 'addToHistory' для каждой транзакции. Так же, как вы печатаете баланс на экране. –

1

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

  • Определить объект под названием Transaction (deposit - double, withdraw - double, current account balance - double)
  • добавить List из Transaction S в askingUser класса как атрибут. Я настоятельно рекомендую переименовать имя класса в AskingUser, чтобы он рассматривался как объект.
  • При каждой операции добавьте новый Transaction в конец List, который вы только что добавили.
  • На выходе распечатайте последние -все 10 элементов List; вы можете добраться до него через объект askingUser. Вы также можете определить функцию в классе askingUser, чтобы распечатать последние 10 элементов, если вы выполняете функцию в соответствии с выбранным количеством элементов, вы можете добавить число от Transaction s к входам функции.
Смежные вопросы