• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:カレンダー作成について質問です。)

カレンダー作成について質問です

_ranco_の回答

  • ベストアンサー
  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.2

あなたのプログラムは現状でほぼ完成していると思います。 モンダイは、数値チェックを例外に頼らずに自前のメソッドでやれという部分ですね。 String[] ms = {"1", "2", .... "12"}; みたいのを月チェック用に作ってもいいですが、とりあえず、ご参考までに下のプログラムを試してください(全角スペースは半角スペース2個に変換してからコンパイルしてください)。 ---------------------------------------------------- /* save and compile as GanjisCalendar */ import java.io.*; import java.util.*; import static java.util.Calendar.*; import static java.lang.Character.*; public class GanjisCalendar {  int year, month;  String yStr, mStr;  // staticメソッドにしてmain()から呼んでもいいが  // その場合ほかのいろんなものもstaticにしないといけない  public GanjisCalendar(){   year = month = -1;   yStr = mStr = "-1";   try {    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));      while (! yearCheck(yStr)){     System.out.print("西暦を入力してください:");     yStr = br.readLine();    }    year = Integer.parseInt(yStr);    while (! monthCheck(mStr)){     System.out.print("月を入力してください:");     mStr = br.readLine();    }    month = Integer.parseInt(mStr);    // 日にち表示用の配列作成    String str[] = new String[32];    for (int i = 0; i < 32; i++) {     if (i == 0) {      str[i] = "  ";     }     else if (i < 10) {      str[i] = " " + i;     }     else {      str[i] = " " + i;     }    }    System.out.println(year + "年" + month + "月");    // うるう年かどうかを判定し年・月・曜日の表示    GregorianCalendar gc = new GregorianCalendar(year, month - 1, 1);    int feb = 0;    if (gc.isLeapYear(year) == true) {     feb = 29;    }    else {     feb = 28;    }    System.out.println("SUN MON TUE WED THR FRI SAT");    int day = gc.get(DAY_OF_WEEK);    // 最初の週の空白部分    int count = 0;    for (int i = SUNDAY; i < day; i++) {     System.out.print(str[0] + " ");     ++count;    }    int over;    if (month == 1 || month == 3 || month == 5 || month == 7      || month == 8 || month == 10 || month == 12) {     over = 32;      }    else if (month == 4 || month == 6 || month == 8      || month == 9 || month == 11) {     over = 31;      }    else{ // 2月     over = feb + 1;    }    for (int i = 1; i < over; i++) {     System.out.print(str[i] + " ");     ++count;     if (count == 7) {      System.out.println();      count = 0;     }    }    System.out.println();   } // end try   catch (IOException ie){    ie.printStackTrace();   }  }  boolean yearCheck(String s){   for (int i = 0; i < s.length(); ++i){    char c = s.charAt(i);    if (! isDigit(c)){     System.out.println("!正の整数を入力してください!");     return false;    }   }   return true;  }  boolean monthCheck(String s){   boolean retval = true;   for (int i = 0; i < s.length(); ++i){ //数字だけか?    char c = s.charAt(i);    if (! isDigit(c)){     retval = false;     break;    }   }   if (retval){ //範囲はどうか?    retval = (s.length() < 3)     && (s.compareTo("1") >= 0 && s.compareTo("12") <= 0);   }   if (! retval){    System.out.println("!1から12までの整数を入力してください!");   }   return retval;  }  public static void main(String args[]) throws IOException {   new GanjisCalendar();  } } ---------------------------------------------

GANJIS
質問者

お礼

お返事遅れてしまってすみません:; わざわざソースまで書いていただいてありがとうございます! こちらのプログラムを試させていただきますね!

関連するQ&A

  • ファイルメーカーPro7でカレンダーを作成したい。

    とても急いでいます。 なるべく簡単な方法でお願いいたします。 カレンダーのレイアウトには表示西暦年と表示月、次月へボタンと前月へボタンを配置して、レイアウトが開かれた時は今月を、ボタンで任意の月のカレンダーが表示できるものが希望です。 テーブル構造とレイアウト表示時・ボタンに設定するスプリクトをご指導下さい。 宜しくお願いします。

  • お勧めのカレンダー作成ソフトを教えてください。

    プリントアウト可能でフリーで手に入るお勧めのカレンダー作成ソフトを教えてください。1ヶ月、2ヶ月、6ヶ月、1年用のカレンダーが作成できるソフトでデジカメ写真使用可能なソフトがベストです。OFFICEテンプレートはチェック済みです。

  • access 自前でカレンダーを作成するには・・・?

    accessで、自前でカレンダーを作成するには、どのような手順を踏めばよいのでしょうか? 月全体で日ごとに記録したメモを表示させる必要があり、カレンダーコントロールではだめなんです。 例としては、こんな感じです。↓ http://www.syswat.com/soft/apm5caln.html このサンプルでは、一旦テーブルに365レコード用意していますが、そのあとの仕組みが分かりません。 どうかご教授願います。

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

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

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

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

  • 継承クラスで定義したメソッドのtry-catch文

    親クラスで、子クラスで実装されたメソッドのExceptionをキャッチしたいのですが、 うまくいきません。 何か良い方法はないでしょうか? abstract class A { public __construct(){ try{ $this->testA(); }catch(Exception $e){ var_dump(1); } } abstract function testA(); } class B extends A { function testA(){ throw Exception('test',1); } } try{ new B; }catch(Exception $e){ var_dump(2); // こっちが動く } よろしくお願いします。

    • ベストアンサー
    • PHP
  • seesaaブログのカレンダー表示

    seesaaでブログを作成しているのですが カレンダー表示が当月のみなのです。 例えば過去の記事(12月・1月)を読みたくても カレンダーから選択することができないので 一件ずつ遡るしかありません。 他のブログでは過去ログの 例えば12月の記事をクリックすると カレンダーも12月に変わりますよね? 記事が書かれてる日にリンクが貼られた状態で。 そのようにしたいのですが、seesaaでは無理なのでしょうか? 分かりにくいかと思いますが、現在の私のブログは 過去ログで月毎に分かれてるだけで その月をクリックしてもカレンダーは現在月のままです。

  • Runtime クラスのexecメソッドについて

    javaで、Runtimeのexec()メソッドを使って、出てきた内容をJTextAreaに出力したいと思っています。つまり、JTextAreaをコマンドプロンプト風にしたいと思っています。しかし、exec()メソッドの戻り値である、Processクラスがいまいちよくわかりません。仕様書(日本語訳)を読んでもProcessクラスのgetInputStream()メソッドやgetOutputStream()メソッドの説明がいまいちピンときません。 try{ Process process = Runtime.getRuntime().exec("hogehoge"); /*---------------------------------------------------------*/ ここで、いかにしてJTextAreaに出力するのかわかりません /*---------------------------------------------------------*/ }catch(Exception e){ } どうか、わかる方よろしくお願いします。

    • ベストアンサー
    • Java
  • カレンダー一年分を作成するには、どうしたらいいですか。

    仕事で、年間休日表を作成したいのです。 B5縦の用紙1枚に、1~6月分と7~12月分を2列に分けて 作成したいのですが、どうやったらいいのでしょうか。 使用しているOSは、ウィンドウズ2000です。 wordのカレンダーウィザードを開いて見たのですが、 一ヶ月分で出てくるのですが、これをどうにか利用すれば 一枚の紙に一年分作成することができるのでしょうか。 また、休日になる日に、○印をつけたいのですが、どうやったらいいのでしょうか。 エクセルでは、カレンダー機能はないのでしょうか。 (見てみたのですが、見つかりませんでしたというか、見つけれなかったと言った方が正しいのですが) また、これ以外に簡単に出来る方法がありますか? お詳しい方いらっしゃいましたら、教えて下さい。 よろしくお願いします。

  • フォームアプリでカレンダーを制作します。

    C言語初心者です。かなり基本的なことかと思いますが、教示いただければ幸いです。 C言語の授業でカレンダーを作成しています。 来年度1年間のカレンダーを作成し、button1,button2 を押下することで前月、翌月へ移動する・また月ごとに季節感のある写真を表示させなければいけません。 textを変えるなど基礎的なことはできるのですが、そこからbutton1 を押下することでカレンダーがめくられるような追加コードが全く分かりません。 どなたかお教えいただければ幸いです。 よろしくお願いいたします。