dポイントプレゼントキャンペーン実施中!

下記で作成したプログラムで、Kakeibo クラスに、正しい日付で入力された収入と支出に基づいて計算される所持金を表すクラス変数 syojikin を初期値0 で用意したのまでは設定したのですけど、収入と支出に基づいて所持金を計算する計算式がわかりません。どのような例があるのですか?
また、main クラス内で最初に所持金を表示し、Kakeibo クラスの変数kakeibo4, kakeibo5 を追加し、この2 つにはコンストラクタにより正常な日付で収入、日付をそれぞれ入力して表示し、最後にまた所持金を表示し、
   所持金:0 円
   2010 年12 月1 日 : 収入3000 円, 支出500 円
   入力した金額は無効です。
   0 年0 月0 日 : 収入0 円, 支出0 円
   2010 年11 月7 日 : 収入0 円, 支出1000 円
   2010 年11 月18 日 : 収入100 円, 支出800 円
   所持金:800 円
にはどのようにすればいいのですか?至急連絡をください?。

class Kakeibo
{
public static int syojikin = 0;

private int year;
private int month;
private int date;
private int syunyu;
private int shisyutsu;

private Kakeibo()
{
year = 0;
month = 0;
date = 0;
syunyu = 0;
shisyutsu = 0;
}

public Kakeibo(int y, int m, int d, int sy, int sh)
{
this();
if(sy>=0 && sh>=0){
year = y;
month = m;
date = d;
syunyu = sy;
shisyutsu = sh;
}
else{
System.out.println("入力した金額は無効です。");
}
}

public void showData()
{
System.out.print(year+"年"+month+"月"+date+"日:収入"+syunyu+"円、支出"+shisyutsu+"円\n");
}
}

class KNO4
{
public static void main(String args[])
{
System.out.println("所持金:"+syojikin+"円");

//Kakeibo kakeibo1 = new Kakeibo();
//kakeibo1.showData();

Kakeibo kakeibo2 = new Kakeibo(2010, 12, 1, 3000, 500);
kakeibo2.showData();

Kakeibo kakeibo3 = new Kakeibo(2010, 12, 1, -5000, 300);
kakeibo3.showData();

Kakeibo kakeibo4 = new Kakeibo(2010, 11, 7, 0, 1000);
kakeibo4.showData();

Kakeibo kakeibo5 = new Kakeibo(2010, 11, 18, 100, 800);
kakeibo5.showData();
}
}

A 回答 (3件)

わけ分からないところがいっぱりありますが、現状のソースを希望通りにするだけなら。



class Kakeibo {
public static int syojikin = 0;

private int year;
private int month;
private int date;
private int syunyu;
private int shisyutsu;

private Kakeibo() {
year = 0;
month = 0;
date = 0;
syunyu = 0;
shisyutsu = 0;
}

public Kakeibo(int y, int m, int d, int sy, int sh) {
this();
if (sy >= 0 && sh >= 0) {
year = y;
month = m;
date = d;
syunyu = sy;
shisyutsu = sh;
syojikin = syojikin + sy - sh;//追加
} else {
System.out.println("入力した金額は無効です。");
}
}

public void showData() {
System.out.print(year + "年" + month + "月" + date + "日:収入" + syunyu
+ "円、支出" + shisyutsu + "円\n");
}
}

class KNO4 {
public static void main(String args[]) {
//System.out.println("所持金:" + syojikin + "円");//コンパイル通らないので・・
System.out.println("所持金:" + Kakeibo.syojikin + "円");

// Kakeibo kakeibo1 = new Kakeibo();
// kakeibo1.showData();

Kakeibo kakeibo2 = new Kakeibo(2010, 12, 1, 3000, 500);
kakeibo2.showData();

Kakeibo kakeibo3 = new Kakeibo(2010, 12, 1, -5000, 300);
kakeibo3.showData();

Kakeibo kakeibo4 = new Kakeibo(2010, 11, 7, 0, 1000);
kakeibo4.showData();

Kakeibo kakeibo5 = new Kakeibo(2010, 11, 18, 100, 800);
kakeibo5.showData();

System.out.println("所持金:" + Kakeibo.syojikin + "円"); //追加
}
}

なぜちゃんとした回答には返事しないのでしょうか・・
    • good
    • 0

案1)コンストラクタにて、入力が妥当であった際に、所持金を更新する。


案2)インスタンスメソッドとして、自オブジェクトの情報を元に所持金を更新するメソッドを定義しておいて、全オブジェクトに対して更新メッセージを送信する。

――という手が考えられるかと。
案1、案2のどちらでもかまわない(当然案1、2以外でも可)ので、
適当にプログラミングできそうなほうを検討してみては。
    • good
    • 0

> 収入と支出に基づいて所持金を計算する計算式がわかりません。



小学校の算数レベルの話だと思いますが
(新しい所持金)=(元の所持金)+(収入)-(支出)

この回答への補足

所持金を計算する方法が分からないし、もう忘れてしまったから質問したのです。悪かったね!!!

補足日時:2010/12/06 12:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!