- ベストアンサー
Kakeiboクラスに収入と支出を入力するコンストラクタを追加し、テストを実施した結果が理解できない
- Kakeiboクラスに収入と支出を入力するコンストラクタを追加し、テストを実施した結果が理解できない
- Kakeiboクラスには、収入と支出を入力するためのコンストラクタが追加されています。しかし、テストを実施した結果が理解できません。
- テスト結果が意図した通りに表示されないため、Kakeiboクラスのコンストラクタに問題がある可能性があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
class Kakeibo { private int year; private int month; private int date; private int syunyu; private int shisyutsu; public 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 (syunyu >= 0 && shisyutsu >= 0) //チェックするのはコンストラクタの引数なのでは・・ //あと { がないと if文の直後の1文しか実行されませんよ・・ この場合なら year = y; だけ if (sy >= 0 && sh >= 0) { year = y; month = m; date = d; syunyu = sy; shisyutsu = sh; } else { //無条件でエラーメッセージを出力してましたけど・・ //System.out.print(year + "年" + month + "月" + date + "日:収入" + syunyu // + "円、支出" + shisyutsu + "円\n"); System.out.println("入力した金額は無効です。"); } } public void showDate() { System.out.print(year + "年" + month + "月" + date + "日:収入" + syunyu + "円、支出" + shisyutsu + "円\n"); } } public class A { public static void main(String args[]) { //Kakeibo kakeibo2 = new Kakeibo(); //課題2 で追加したコンストラクタにより って書いてありますけど・・ Kakeibo kakeibo2 = new Kakeibo(2010, 12, 1, 3000, 500); kakeibo2.showDate(); //Kakeibo kakeibo3 = new Kakeibo(2010, 12, 1, 3000, 500); // 無効な金額じゃないのかって気がしますけど・・ Kakeibo kakeibo3 = new Kakeibo(2010, 12, 41, 3000, 500); kakeibo3.showDate(); //なので金額も kakeibo3 = new Kakeibo(2010, 12, 41, 3000, -1); kakeibo3.showDate(); } }
その他の回答 (1)
- ketuago65
- ベストアンサー率50% (13/26)
ところどころ文章があれでわかりづらいですがこういうことですかね? if(syunyu>=0 && shisyutsu>=0) { //ここの括弧 year = y; month = m; date = d; syunyu = sy; shisyutsu = sh; System.out.print(year+"年"+month+"月"+date+"日:収入"+syunyu+"円、支 出"+shisyutsu+"円\n"); } // ここの括弧 System.out.println("入力した金額は無効です。"); 上にしるしをつけた部分が足りません。 ifに括弧がついてないのでif文以降の1行目にしか条件がつきません。 つまり条件に関係なくエラーメッセージが出るようになっています。 あと、this()で上のコンストラクタを呼んでしまっているのでどんな値を渡しても 全部0になってしまうと思うのですが・・・ if文の条件もshishutsuとsyunyuではなくshとsyじゃないと意味がないです。