質問編集履歴

1 進展させました

amareno

amareno score 14

2018/11/19 05:28  投稿

Javaの銀行口座プログラムのユーザーの入金履歴と出金履歴の表示の仕方について
### 前提・実現したいこと
Javaを用いて簡単な銀行口座のプログラムを作っています。ユーザーがDepositを選択するとユーザーの好きな額を入金し、withdrawalを選択すると好きな額を引き下ろし、output balanceを選択するとその時の口座に入っているお金を表示し、Output all depositsを選択するとその時までの入金履歴を表示し、Output all withdrawalsを選択するとその時までの出金履歴を表示します。現在、入金履歴と出金履歴の仕方がよく分からなくこちらで質問させて頂きました。
下記のコードでdeposit.lengthとwithdrawal.lengthが0だと思うので入金履歴と出金履歴が表示されないのだと思います。そしてcountDpとcountWdのカウントの仕方が間違えていると思います。正しくするにはどのようにすれば良いでしょうか?教えて頂きたいです。
このプログラムの問題文にarrayを使えと書いてあるのでarrayを使う前提でお願いします。
### 該当のソースコード
```Java
import java.util.Scanner;
import java.io.*;
import java.io.FileNotFoundException;
import java.io.PrintWriter;  
class Account {
   private float balance;
 
   private int countDp;
   private int countWd;
   float[] deposit = new float[countDp];
   float[] withdrawal = new float[countWd];
   float[] deposit = new float[10];
   float[] withdrawal = new float[10];
   Scanner input = new Scanner(System.in);
   public Account() {
       balance = 0;
       countDp = 0;
       countWd = 0;
   }
   private float[] enhanceArray(float[] array) {  
       float[] newArray = new float[array.length + 10];  
       for (int i = 0; i < array.length; i++) {  
           newArray[i] = array[i];  
       }  
       return newArray;  
   }  
 
 
   public float depositing() {
       System.out.println("Enter the amount you would like to deposit: ");
       float depositAmount = input.nextFloat();
       if (countDp == deposit.length) {  
           deposit = enhanceArray(deposit);  
       }  
       deposit[countDp] = depositAmount;  
       balance += depositAmount;
       countDp += 1;
       return balance;
   }
   public float withdrawing() {
       System.out.println("Enter the amount you would like to withdraw: ");
       float withdrawalAmount = input.nextFloat();
       if (balance >= withdrawalAmount)
       if (balance >= withdrawalAmount) {
           if (countWd == deposit.length) {
               withdrawal = enhanceArray(withdrawal);
           }
           withdrawal[countDp] = withdrawalAmount;
           balance -= withdrawalAmount;
       else {
           countWd += 1;
       } else {
           System.out.println("Less balance, transaction failed.");
       }
       countWd += 1;
       return balance;
   }
   public float balanceOfAccount() {
       return balance;
   }
                       
   public void outputAllDeposits() {
//       while(input.hasNextFloat()) {  
//           deposit[countDp] = input.nextFloat();  
//           float line = deposit[countDp];  
//           countDp += 1;  
//           System.out.println(line);  
//       }  
       System.out.println("Outputting all your deposits:");
       for (int i = 0; i < deposit.length; i++) {
       for (int i = 0; i < countDp; i++) {
           deposit[i] = input.nextFloat();
           if(deposit[i] >= 0.0f) {
               System.out.println(deposit[i]);
               System.out.println("$" + deposit[i]);
           }
       }
   }
   public void outputAllWithdraws() {
       System.out.println("Outputting all your withdrawals:");
       for (int i = 0; i < withdrawal.length; i++) {
       for (int i = 0; i < countWd; i++) {
           withdrawal[i] = input.nextFloat();
           if(withdrawal[i] >= 0.0f) {
               System.out.println(withdrawal[i]);
               System.out.println("$" + withdrawal[i]);
           }
       }
   }
   public void outputToTextFile() {
       try {
           PrintWriter pw = new PrintWriter("bankAcount.txt");
           pw.println("Your balance: " + balanceOfAccount());
           pw.println("Outputting all your withdrawals:");
           for (int i = 0; i < withdrawal.length; i++) {
               withdrawal[i] = input.nextFloat();
               if(withdrawal[i] >= 0.0f) {
                   pw.println(withdrawal[i]);
               }
           }
           pw.println("Outputting all your deposits:");
           
           for (int i = 0; i < deposit.length; i++) {
               deposit[i] = input.nextFloat();
               if(deposit[i] >= 0.0f) {
                   pw.println(deposit[i]);
               }
           }
           pw.close();
       } catch (IOException ex) {
           ex.printStackTrace();
       }
   }
}
public class Main {
   public static void main(String[] args) throws Exception{
       int choice = 0;
       Account account = new Account();
 
       Scanner in = new Scanner(System.in);
 
       do {
           System.out.println("**************************************\n" +
                   "* Bank Account Program:             *\n" +
                   "*   Enter # to run program or Quit *\n" +
                   "*   1) Make a Deposit             *\n" +
                   "*   2) Make a Withdrawal          *\n" +
                   "*   3) Output balance              *\n" +
                   "*   4) Output all deposits         *\n" +
                   "*   5) Output all withdrawals      *\n" +
                   "*   6) Quit                        *\n" +
                   "**************************************\n");
           choice = in.nextInt();
           switch (choice) {
               case 1:
                   account.depositing();
                   break;
               case 2:
                   account.withdrawing();
                   break;
               case 3:
                   System.out.println("Your balance is " + account.balanceOfAccount());
                   break;
               case 4:
                   account.outputAllDeposits();
                   break;
               case 5:
                   account.outputAllWithdraws();
                   break;
               case 6:
                   System.out.println("Thank you for using this Bank.");
                   break;
                   default:
                       break;
           }
       } while(choice != 6);
       account.outputToTextFile();
   }
}
 
```
  • Java

    18409 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る