- ベストアンサー
Kakeiboクラスに収入と支出を入力するコンストラクタを追加し、テストを実施した結果が理解できない
- Kakeiboクラスに収入と支出を入力するコンストラクタを追加し、テストを実施した結果が理解できない
- Kakeiboクラスには、収入と支出を入力するためのコンストラクタが追加されています。しかし、テストを実施した結果が理解できません。
- テスト結果が意図した通りに表示されないため、Kakeiboクラスのコンストラクタに問題がある可能性があります。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- 全く分かりません(2)
下記で作成したプログラムで、「オーバーロードするコンストラクタでは、まずK1で作成したコンストラクタを呼び出す」のにthis()を使ったのですが、うまく回りませんし、「その後収入及び支出が0 以上か判断し、満たしていなければエラーメッセージを出力し、日付、収入、支出に値を入力しないようにする。満たしていれば引数の値を代入する。」のif~else文を使っても別の実行になってしまいます。どのようなプログラムにしたら、 0 年0 月0 日 : 収入0 円, 支出0 円 2010 年12 月1 日 : 収入3000 円, 支出500 円 入力した金額は無効です。 0 年0 月0 日 : 収入0 円, 支出0 円 になるのですか?至急連絡をお願いします。 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(sy>=0 && sh>=0) year = y; month = m; date = d; syunyu = sy; shisyutsu = sh; System.out.print(year+"年"+month+"月"+date+"日:収入"+syunyu+"円、支出"+shisyutsu+"円\n"); System.out.println("入力した金額は無効です。"); } public void showData() { System.out.print(year+"年"+month+"月"+date+"日:収入"+syunyu+"円、支出"+shisyutsu+"円\n"); } } class KNO { public static void main(String args[]) { Kakeibo kakeibo1 = new Kakeibo(); kakeibo1.showData(); Kakeibo kakeibo2 = new Kakeibo(2010, 12, 1, 3000, 500); kakeibo2.showData(); Kakeibo kakeibo3 = new Kakeibo(); kakeibo3.showData(); } }
- ベストアンサー
- Java
- クラスメソッドについて
Kakeibo クラスにあるsyojikin(初期値0)をprivate フィールドとし、その代わりにクラスメソッドshowSyoji(戻り値、引数無し)を用意して、下記のプログラムを作成したのですがクラスメソッドのshowSyojiがうまく回りません。これはもしかしてクラス変数も必要なのですか(privateもつけて)?また、このプログラムはどのようなプログラムになるのですか? class Kakeibo { private int year; private int month; private int date; private int syunyu; private int shisyutsu; private int syojikin; private Kakeibo() { year = 0; month = 0; date = 0; syunyu = 0; shisyutsu = 0; syojikin = 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 static void showSyoji() { System.out.println("所持金:"+syojikin+"円"); } public void showData() { System.out.print(year+"年"+month+"月"+date+"日:収入"+syunyu+"円、支出"+shisyutsu+"円\n"); } } class KNO5 { public static void main(String args[]) { Kakeibo.showSyoji(); //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(); Kakeibo.showSyoji(); } }
- ベストアンサー
- Java
- 所持金の計算式とその表示の仕方
下記で作成したプログラムで、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(); } }
- ベストアンサー
- Java
- sql serverのsqlについて
windows7 64bit sql server 2012 expressをつかっています。 select YEAR("日付") as yere,MONTH("日付") as month,収支名,sum("金額")as kin from 収支 group by YEAR("日付"),MONTH("日付"),収支名 を実行して、 yere month 収支名 kin 2013 6 支出 13011 2013 6 収入 33500 2013 7 支出 20000 2013 7 収入 70000 と、なりましたが、同じ年、月の収支と支出を求める表を得るにはどうしたらよいでしょうか? yere month 差 2013 6 -24089 2013 7 50000 のような感じです。 (もとのテーブルはこれです) id 日付 収支名 項目 金額 1 2013-06-16 収入 給料 15000 2 2013-06-16 支出 ガス代 555 ...... 宜しくお願いします。
- ベストアンサー
- SQL Server
- Excel VBAで「date」関数を使いたい
VBAを使用して年月日を入力してます。 セルに表示だけなら Year & "/" & Month… とかでもいいんですが、その日付で計算を行いたいんです。 何日足す、とか。。 それでExcelで使える Date(Year,Month,Day) を思い出したんですが、VBAではエラーになってしまいました。 Application.WorksheetFunction.Date(Year, Month, Day) や Application.Date(Year, Month, Day) もダメでした。 どのようにしたら入力した日付で計算が行えるでしょうか?
- ベストアンサー
- オフィス系ソフト
- うるう年判定
こんにちは。今回も宜しくお願いします<(_ _)> 画面から入力された日付(生年月日)の妥当性をチェックしたいのですが、それにはまずクラス(API)をわかっていなくてはいけないと思い、お試しで作ったものが、私の想像していた通りに動きません。 import java.util.*; public class Test { public static void main(String[] args) { int year; int month; int day; GregorianCalendar g = new GregorianCalendar(); year = g.get( Calendar.YEAR ); month = g.get( Calendar.JUNE ); day = g.get( Calendar.DATE ); System.out.println("year = " + year); System.out.println("month = " + month); System.out.println("day = " + day); } } 上記のソースを実行すると、 C:\WINDOWS\デスクトップ\カレンダ>java Test year = 2003 month = 3 day = 3 となります。月の指定はCalendar.JUNEとしているのに、どうして3と表示されるのでしょうか? あともう一つ質問なのですが、GregorianCalendarに自分の好きな年月を与えたいのですが、 g.get( 1980 ); とすると実行時にArrayIndexOutOfBoundsExceptionのエラーがでます。 GregorianCalendarを使って任意の年月を渡すことは無理なんでしょうか? 私が最初考えたのが、画面から入力された値をそのままGregorianCarendarに渡して、もしもその時にエラーがでたらそれは妥当ではなかった値(閏年じゃないのに2月29日と入力したり、とか)として、画面にて再入力を促すメッセージをだそうと思っていたのですが、この考え方はどこか変でしょうか? お手数お掛けいたしますが、宜しくお願い致します<(_ _)>
- ベストアンサー
- Java
- str メンバ関数について
str メンバ関数について 下記のstring Date::to_string() const のstr()メンバ関数が日付クラスDate、 (インタフエース部、実装部)に定義等が記入されていないので、何処に定義されているか教えてください。 ************************************************************* // 日付クラスDate(第2版:実装部) #include <ctime> #include <sstream> #include <iostream> #include "Date.h" using namespace std; //--- 文字列表現を返却 ---// string Date::to_string() const { ostringstream s; s << year << "年" << month << "月" << day << "日"; return s.str(); } ****************************************************************** // 日付クラスDate(第2版:インタフェース部) #include <string> #include <iostream> using namespace std; class Date { int year; // 西暦年 int month; // 月 int day; // 日 public: Date(); // デフォルトコンストラクタ Date(int y, int m = 1, int d = 1); // コンストラクタ int Year() const { return year; } // 年を返却 int Month() const { return month; } // 月を返却 int Day() const { return day; } // 日を返却 string to_string() const; // 文字列表現を返却 }; ostream& operator<<(ostream& s, const Date& x); // 挿入子
- ベストアンサー
- C・C++・C#
- java Calendarクラス
javaで月、日を入力してカレンダーを作成したのですが 年と月のsetでmonth-1はマジックナンバーなので直したいのですが どなたかわかる方教えてください。 package sample; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Test { private final static int firstday = 1; public static void main(String[] args) { //カレンダーのインスタンスを取得します Calendar cal = Calendar.getInstance(); //文字入力 BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); //年を取得 int year =0; //月を取得 int month =0; //最後の日付 int lastDay =0; //月初めの曜日を取得 int week =0; //年妥当性チェック boolean CheckYear = true; //月妥当性チェック boolean CheckMonth = true; try { //年妥当性チェック while(CheckYear){ System.out.println("年を入力してください"); //年を入力します year = Integer.parseInt(input.readLine()); //年が4桁の場合 if(String.valueOf(year).length()==4){ CheckYear = false; }else{ System.out.println("年は4桁で入力してください"); } } //月妥当性チェック while(CheckMonth){ System.out.println("月を入力してください"); //月を入力します month = Integer.parseInt(input.readLine()); //月が1~12の場合 if(month>=1&&month<=12){ CheckMonth = false; }else{ System.out.println("月1~12を入力してください"); } } }catch(IOException e){ System.out.println("数字以外は入力しないでください"); System.out.println("処理を中断します"); return; }catch (Exception a) { System.out.println("数字以外は入力しないでください"); System.out.println("処理を中断します"); return; } //年、月をセットします cal.set(year,month-1,cal.getActualMinimum(Calendar.DATE)); //月初めの曜日を取得 week = cal.get(Calendar.DAY_OF_WEEK); //年月を出力する System.out.println(String.valueOf(year)+"年"+String.valueOf(month)+"月"); //曜日を出力する System.out.println("日 月 火 水 木 金 土"); //最後の日付を取得する lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); /* * 最後の日付を取得する */ if(month==1||month==3||month==7||month==8||month==10||month==12) { lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); }else if(month==4||month==6||month==9||month==11){ lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); }else if(year%4==0&&month==2){ lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); }else if(year%4!=0&&month==2){ lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); } /* * カレンダーを出力する */ //最後の日付まで繰り返す // 最後の日付まで繰り返す for (int i = 1; i <= lastDay; i++) { // 1日とそれ以外で分岐する if (i == 1) { // 1日の曜日位置まで移動する for (int j = 1; j < cal.get(Calendar.DAY_OF_WEEK); j++) { System.out.print(" "); } } else { // 日付を増やす cal.add(Calendar.DAY_OF_MONTH, firstday); } // 1~9と10~で表示を変える if (i < 10) { System.out.print(" " + i); } else { System.out.print(" " + i); } // 土曜日になったら改行する if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) { System.out.println(""); } } } }
- 締切済み
- Java
- c言語 日付の差の計算
現在の日付と未来の日付を入力すると、現在の日付から未来の日付まで何日あるか計算して表示するプログラムを作成せよ。 作成するプログラムの日付の表現は structure st_date { int year; Int month; Int day; }; また、mktime()などの標準ライブラリの時刻、日付関数を使用してはならない。 五時間くらい格闘してますが、正直何が何だかわかりません(ー ー;) これのプログラム、また、考え方を教えて頂きたいです(T ^ T)
- 締切済み
- その他(学問・教育)