質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

Q&A

解決済

1回答

1065閲覧

要素数3の配列で入金処理・出金処理・利息をそれぞれ計算して出力したいのだが、利率だけ計算結果が変わらない。

NIKONIKONIKONIK

総合スコア83

Java

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

0グッド

0クリップ

投稿2019/06/23 04:07

** 要素数3の配列で入金処理・出金処理・利息をそれぞれ計算して出力したいのだが、利率だけ計算結果が変わらない**

下記の出力結果にある通り、入金処理、出金処理まではうまくいくのだが、利率だけ解決できない。

FBankAccountクラスにある、利率計算メソッド(void addInterest())口座残高に利息額を加える 所で間違っていると思うのだが、解決方法がわかりません。

BankBase

1package k08; 2 3public class BankBase { 4 private String number; 5 private String name; 6 private int money; 7 8 BankBase(String number,String name, int money){ 9 this.number = number; 10 this.name = name; 11 this.money = money; 12 } 13 public String getNumber() { 14 return number; 15 } 16 public String getName() { 17 return name; 18 } 19 public int getMoney(){ 20 return money; 21 } 22 void depositMoney(int money) { 23 this.money += money; 24 } 25 void paymentMoney(int money) { 26 if(this.money >= money) { 27 28 this.money -= money; 29 } 30 else { 31 System.out.println("残高不足です"); 32 } 33 } 34} 35

FBankAccount

1package k08; 2 3public class FBankAccount extends BankBase{ 4 private static double rate; 5 private static int counter=1001; 6 7 FBankAccount(String name,int money){ 8 super("F" + counter,name,money); 9 counter +=10; 10 } 11 void addInterest() { 12 int money = getMoney() + (int)(Math.round((double)getMoney() * FBankAccount.rate/100)); 13 } 14 void setRate(double rate) { 15 FBankAccount.rate = rate; 16 } 17 double getRate() { 18 return rate; 19 } 20} 21

Main

1package k08; 2import java.util.Scanner; 3public class Kadai0803 { 4 5 public static void main(String[] args) { 6 Scanner sc = new Scanner(System.in); 7 8 FBankAccount[] fb = new FBankAccount[3]; 9 10 for(int i=0; i<fb.length; i++) { 11 System.out.print("Name --> "); 12 String name = sc.next(); 13 System.out.print("Money --> "); 14 int money = sc.nextInt(); 15 16 fb[i] = new FBankAccount(name,money); 17 } 18 System.out.println(); 19 System.out.println("口座一覧"); 20 21 for(int i=0; i<fb.length; i++) { 22 System.out.println(fb[i].getNumber() +" "+ fb[i].getName() +" "+ fb[i].getMoney()); 23 } 24 System.out.println(); 25 System.out.println("入金処理"); 26 27 for(int i=0; i<fb.length; i++) { 28 System.out.println("Number : " + fb[i].getNumber()); 29 System.out.print("Deposit Money -->"); 30 int money = sc.nextInt(); 31 fb[i].depositMoney(money); 32 } 33 System.out.println(); 34 System.out.println("口座一覧"); 35 36 for(int i=0; i<fb.length; i++) { 37 System.out.println(fb[i].getNumber() +" "+ fb[i].getName() +" "+ fb[i].getMoney()); 38 } 39 System.out.println(); 40 System.out.println("出金処理"); 41 42 for(int i=0; i<fb.length; i++) { 43 System.out.println("Number : " + fb[i].getNumber()); 44 System.out.print("Payment Money -->"); 45 int money = sc.nextInt(); 46 fb[i].paymentMoney(money); 47 } 48 System.out.println(); 49 System.out.println("口座一覧"); 50 51 for(int i=0; i<fb.length; i++) { 52 System.out.println(fb[i].getNumber() +" "+ fb[i].getName() +" "+ fb[i].getMoney()); 53 } 54 System.out.println(); 55 System.out.print("Rate -->"); 56 int rate = sc.nextInt(); 57 58 for(int i=0; i<fb.length; i++) { 59 fb[i].setRate(rate); 60 fb[i].addInterest(); 61 } 62 63 System.out.println(); 64 65 System.out.println("口座一覧"); 66 for(int i=0; i<fb.length; i++) { 67 System.out.println(fb[i].getNumber() +" "+ fb[i].getName() +" "+ fb[i].getMoney()); 68 } 69 } 70 71} 72

OutputResult

1Name --> Aoyama 2Money --> 15000 3Name --> Inoue 4Money --> 27000 5Name --> Uchiyama 6Money --> 8000 7 8口座一覧 9F1001 Aoyama 15000 10F1011 Inoue 27000 11F1021 Uchiyama 8000 12 13入金処理 14Number : F1001 15Deposit Money -->3000 16Number : F1011 17Deposit Money -->5000 18Number : F1021 19Deposit Money -->1000 20 21口座一覧 22F1001 Aoyama 18000 23F1011 Inoue 32000 24F1021 Uchiyama 9000 25 26出金処理 27Number : F1001 28Payment Money -->10000 29Number : F1011 30Payment Money -->40000 31残高不足です 32Number : F1021 33Payment Money -->9000 34 35口座一覧 36F1001 Aoyama 8000 37F1011 Inoue 32000 38F1021 Uchiyama 0 39 40Rate -->3 41 42口座一覧 43F1001 Aoyama 8000 44F1011 Inoue 32000 45F1021 Uchiyama 0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

diff

1void addInterest() { 2- int money = getMoney() + (int)(Math.round((double)getMoney() * FBankAccount.rate/100)); 3+ depositMoney((int)(Math.round((double)getMoney() * FBankAccount.rate/100))); 4}

そのmoneyは、メソッド内で宣言されているので、グローバル変数とは違うものとして扱われると思います。

投稿2019/06/23 04:37

編集2019/06/23 04:38
CreeperSaviour

総合スコア129

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NIKONIKONIKONIK

2019/06/23 04:47

理解しました!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問