• ベストアンサー

カレンダーのプログラムなのですが・・・

入力なしで、2004 年 7 月のカレンダーを1行あたり1週が表示される形で出力する(1行あたり1週表示されていれば,多少左右の位置がずれていてもよい)プログラムの書き方がわかりません。 簡単な問題かもしれませんが、教えてください!

質問者が選んだベストアンサー

  • ベストアンサー
  • moccos
  • ベストアンサー率43% (61/140)
回答No.3

>入力なしで・・・というのがコマンドラインパラメータでなくてという意味でしょうか?そのときはmonthに直接代入してください。←よけいなお世話かも。 当方もJAVA初心者でおこがましいのですが回答が無い様なので・・・・ //2004年カレンダーの表示 コマンドラインパラメーターで表示月を入力 public class Calender{ public static void main(String[] args){ int month , i , weekday , arrday ; //月の日数を格納 mth[0]の 4 は2004年元日の位置(シフト用) int[] mth = {4,31,29,31,30,31,30,31,31,30,31,30,31}; String week = " 日 月 火 水 木 金 土"; month = Integer.parseInt(args[0]); //表示する月以前の累積日数を計算するループ int alldays = 0 ; for (i= month -1 ; i >= 0 ;i-- ) { alldays = mth[i] + alldays ; } //初日の位置決め  weekday = alldays % 7 ; //配列の生成数 当月日数+開始位置+1 arrday = mth[month] + weekday +1; //String の配列宣言  String[] day = new String[arrday]; //配列に格納する String型の初期化 String sday = ""; //配列に格納するループ for ( i=0 ; i < arrday ; i++ ) { //格納する日付をString型に変換 sday = String.valueOf( i - weekday ); if ( i <= weekday ) { //開始までの空白条件 day[i] = " "; } else if ( (i - weekday) < 10 ) { day[i] = " " + sday ; //一桁の位置調整条件 } else { day[i] = " " + sday ; } } System.out.println( "\n ★" + month +"月のカレンダー★\n"); System.out.println( week ); //表示用のループ 7配列表示で改行 for ( i=0 ; i < arrday ; i++ ) { System.out.print( day[i] ); if ( i % 7 == 0 ) { System.out.println(); } } System.out.println(); } } コマンドプロンプトで以下のように出力されます。 ★7月のカレンダー★ 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • t-satoh
  • ベストアンサー率35% (211/591)
回答No.4

 これって基本的なことが解っているなら、 アルゴリズムの問題でしかない気が・・・。(^^;)  とりあえず、簡単に、当月のカレンダーを、 表示するだけのアプリケーションを作成しました。 かなり、適当なので、参考までに。(^^;) //CalendarApp.java import java.text.*; import java.util.*; import java.awt.*; import javax.swing.*; public class CalendarApp extends JFrame{ public CalendarApp(){ JLabel[][] cal = new JLabel[7][7]; JPanel panel = new JPanel(); Calendar now = Calendar.getInstance(); int month = now.get(Calendar.MONTH); //月の初日へセット now.set(Calendar.DATE,1); //レイアウトの設定 getContentPane().setLayout(new BorderLayout()); //カレンダーの見出し getContentPane().add(new JLabel(new SimpleDateFormat("yyyy年MM月").format(now.getTime())),BorderLayout.NORTH); //カレンダーヘッダー部の設定 cal[0][0]=new JLabel("日"); cal[0][1]=new JLabel("月"); cal[0][2]=new JLabel("火"); cal[0][3]=new JLabel("水"); cal[0][4]=new JLabel("木"); cal[0][5]=new JLabel("金"); cal[0][6]=new JLabel("土"); //カレンダー本体の初期化 for(int i=1;i<cal.length;i++) for(int j=0;j<cal[0].length;j++) cal[i][j] = new JLabel(); //カレンダーの生成 for(int i=1;month==now.get(Calendar.MONTH) && i<cal.length;i++) for(int j=0;month==now.get(Calendar.MONTH) && j<cal[0].length;j++,now.add(Calendar.DATE,1)){ if(i==1 && j==0) j=now.get(Calendar.DAY_OF_WEEK)-1; cal[i][j] = new JLabel(Integer.toString(now.get(Calendar.DATE))); } //生成したカレンダーをパネルへセット panel.setLayout(new GridLayout(cal.length,cal[0].length)); for(int i=0;i<cal.length;i++) for(int j=0;j<cal[0].length;j++) panel.add(cal[i][j]); //パネルをアプリケーション本体へ追加 getContentPane().add(panel,BorderLayout.CENTER); //コンポーネントの表示 setVisible(true); } public static void main(String args[]){ CalendarApp app = new CalendarApp(); app.setBounds(100,100,250,250); app.show(); } }

全文を見る
すると、全ての回答が全文表示されます。
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

VBAやExcelでカレンダーを作りました。 コンソールなら、 1.表示位置を指定するためのTABやスペースを設定。 2.月の最初の曜日を得る。 3.曜日位置に従って、表示位置まで移動。 4.土曜か日曜で改行 5.翌週表示。 6.月末日になったら表示終了

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

もう少し具体的に描いていただかないと回答者の方も回答のしようがありませんよ。 1.出力デバイスは何ですか? (ディスプレイ or プリンタ) 2.使用の言語は何ですか? ( C or VB etc) COBOL85なら私にも書けるんですが、それ以外では私には無理なんですが(^^;

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • カレンダーのプログラムについて

    三次元配列を使い、その年を入力すると一年分のカレンダーが出力するC言語のプログラムを教えてください。 それで、一ヶ月を六週として数字が当てはまらない所には「0」が入るようにして、後で「0」を空白に変えるようにして、1月の第1週が出力された後、2月の第1週、3月の第1週、1月の第2週、2月の第2週・・・・・と順に表示させるようなプログラムです。 出力結果は横に三か月分、縦に四か月分が出力される(下記)ようにしたいのですが、よろしくお願いします。 出力結果       ・・・年    1月  2月  3月    4月  5月  6月    7月  8月  9月    10月  11月  12月

  • カレンダーのC言語プログラムを教えてください!

    西暦年と月を入力すると、その年月のカレンダーが出てくる万年カレンダーのC言語プログラムを教えてください! その出力結果が 2***年 *月 月 火 水 木 金 土 日 月 火 水 木 金 土 日 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 というように二週間ごとに表示するもので、 うるう年の判別ができるものになるようにしたいのですが。 年=n月=g で入力するものを作りたいんです。 よろしくお願いします!!!(>_<)

  • C言語でカレンダーを作成しています

    こんばんは。 当方プログラミング初心者なのですが、C言語でカレンダーを作成しています。 具体的には年だけ入力すれば一年分のカレンダーが出力され、 年と月を入力すればその年月のカレンダーが出力されるようなプログラムを作りたいと思っています。 例えば2011年と入力すれば2011年一年分のカレンダーが表示され、 2011年2月と入力すれば2011年2月一月分のカレンダーが表示されるといった感じです。 また、年を入力しなかった場合はエラーメッセージを返すようにしたいと考えています。 プログラムの概要は以下のようなものを考えてます。 scanfで年月を入力 if(年だけ入力すれば) 一年分のカレンダーを表示 if else(年月両方を入力すれば) 一ヶ月分のカレンダーを表示 else(それ以外) エラーメッセージ カレンダーを表示するプログラムは完成したのですが、if文の中身をどのようにすればいいのかわかりません。 良い案がありましたら、ご教示お願い致します!

  • カレンダーの作り方教えてください!

    西暦年と月を入力すると、その年月のカレンダーが出てくる万年カレンダーのC言語プログラムを教えてください! という質問をしたのですが、12か月分一度に表示させるには、どうしたらいいのでしょうか?

  • 万年カレンダーのC言語プログラムを教えてください

    西暦年と月を入力すると、その年月のカレンダーが出てくる万年カレンダーのC言語プログラムを教えてください!お願いします!

  • カレンダーにスケジュール反映

    エクセルで社内のスケジュール管理をしたいと考えているのですが、うまく反映させる方法がわからずに悩んでいます。内容は、1つ目のシートに各情報を箇条書き、2シート目を万年カレンダーにしてそこに1つ目のシートから情報を反映させるという感じです。 1つ目のシートに |住所|名前|記念日A(年/月/日)|記念日B(年/月/日)|記念日C(年/月/日)| が箇条書きで500件ほど羅列してあり、その情報を基に2シート目のカレンダーが特定の日にちに当てはまる情報をその日の予定として表示する形にしたいと思っています。 2シート目の万年カレンダーは 1行目を|@|年|@|月|*@の部分は自由に数字を入力 にしてあり、その下にカレンダーが表示されています カレンダーの形は 2行 |日|月|火|水|木|金|土| 3行 |1|2|3|4|5|6|7| 4行 |ここに各日付に一致した1シートの住所・名前を表示| 5行 |ここに各日付に一致した1シートの住所・名前を表示| 6行 |ここに各日付に一致した1シートの住所・名前を表示| 7行 |ここに各日付に一致した1シートの住所・名前を表示| 同じ日付で一致する情報が重複する場合5~7行を使用して、すべて表示させたいです。 分かりにくい質問で申し訳ありません。ご教授いただけたら大変ありがたいです。 他に方法があれば、そちらでアドバイス頂いても構いません。 よろしくお願い致します。

  • C言語でのカレンダー作成

    今、C言語でカレンダーを表示させるプログラムを作成しています 西暦と月を入力すると、その年、その月の1ヶ月分のカレンダーが表示されるプログラムを作りました そこで、次は入力した月から3ヶ月分のカレンダーを表示させるプログラムを作成したいのですが、どなたか教えてくださいませんか? 配列を使う方法や文字列など色々な方法があると伺って、どの方法が作りやすいのかわからないんです・・・ borland c を使用しています

  • カレンダーコントロール 11.0 プログラム

    ・カレンダーから日付を入力するマクロを作成するときの、コントロール  プログラム(カレンダーコントロール 11.0 )が私のPCには入っていません  入手方法と、インストール方法を教えてください。    (PC歴3年の新人です)

  • エクセル2007でのカレンダー作成

    エクセルでカレンダーを作成したいのですが、関数がわからず悩んでいます。 カレンダーといっても七曜日のものではなく、月曜日から金曜日までの五日間を繰り返すものです。(勤務体系の資料に使うものです) セルC3に年・月を入力し、その後D3~Z3~AB3の合計25セルに「日付」が、D4~Z4~AB4の合計25セルに「曜日(月~金の繰り返し」を出すことは可能でしょうか? 25セルあるのは、平日五日間×五週間=25セルとなっています。週に合わせて日付が反映されるようにしたいのです。 たとえば、今年の11月の場合だと、3日・月曜日は二週目になるので、二週目月曜日の位置(I3)の位置に3と表示されるように、12月の場合だと、一週目月曜日の位置(D3)の位置に1と表示されるようにしたいです。 加えて、日付が埋まらないセルは、下段の曜日と一緒に空白のセルになるようにしたいです。 ご指導よろしくお願いします。

  • カレンダーの年月入力の判定

    現在C言語でカレンダープログラムを書いています。 表示させたい年月を入力するのですが、正しい形で入力されたかの判定プログラムについてご教授いただきたいです。 具体的にはYYYY/MMまたはYYYYMMの形で入力されたかどうかを判定したいと思っています。 どのようなプログラムを書けばよろしいでしょうか。

このQ&Aのポイント
  • 異動により上司が変わることで、コロナ対策について注意が必要となっている。
  • 私はプライベートの自由を尊重すべきだと考えており、自身が感染リスクを避けて行動してきたことを主張している。
  • 今後、解雇を覚悟してでも地元に帰りたいと考えており、資格取得を通じて再就職の可能性も探っている。
回答を見る