
西暦年号・月を入力して、その月のカレンダーを出力するというものです。
<処理例>
指定日のカレンダーを出力します。
西暦年を入力:2007
月を入力:6
日 月 火 水 木 金 土
______________________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
というものを出力したいです。下線は何もないという意味です。(見にくかったらすみません)
一応途中のプログラム載せます。 ~~~の部分を教えてください。
お願いします。
import java.io.*;
public class Ex01a{
public static void main ( String[] args ) throws IOException{
int year, month, day, i, youbiNum=0;
String ss;
BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));
System.out.println("指定月のカレンダーを出力します");
System.out.print("西暦年を入力:");
ss = kbd.readLine();
year = getInt(ss);
System.out.print("月を入力:");
ss = kbd.readLine();
month = getInt(ss);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
day = 1;
youbiNum=getyoubi(year,month,day);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
public static void printCal(int maxDay, int youbiNum){
int cal[] = new int[43];
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public static int getyoubi(int year, int month, int day){
int youbiNum, y1, nissuu=0;
y1 = year-1;
nissuu += y1 + y1/4 - y1/100 + y1/400+getJulian(year, month, day);
youbiNum = nissuu % 7;
return youbiNum;
}
public static int getJulian(int year, int month, int day){
int julian;
julian = day;
while(--month > 0){
julian+=getDay(year,month);
}
return julian;
}
public static int getDay(int year, int month){
int mmdd[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int mmdd_day;
mmdd[2] += uruu(year);
mmdd_day = mmdd[month];
return mmdd_day;
}
public static int getInt(String ss){
try{
return Integer.parseInt(ss);
}
catch(Exception e){
return 0;
}
}
public static int uruu(int yy){
if(yy%4==0 && yy%100!=0 || yy%400==0) return 1;
else return 0;
}
}
A 回答 (2件)
- 最新から表示
- 回答順に表示

No.2
- 回答日時:
#1です
課題か何かですか??
ちょっと求めている答えと違うかもしれませんが、以下にソースを載せます
何かしら読み取ってもらえれば幸いです
---------------サンプル---------------
import java.io.*;
public class Ex01a {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("指定月のカレンダーを出力します");
System.out.print("西暦年を入力:");
String line = reader.readLine();
int year = toInt(line);
System.out.print("月を入力:");
line = reader.readLine();
int month = toInt(line);
printCal(year, month);
}
public static void printCal(int year, int month) {
int firstDayOfWeek = getDayOfWeek(year, month, 1);
int lastDay = getLastDay(year, month);
System.out.println("日\t月\t火\t水\t木\t金\t土");
int dayOfWeek = 0;
for(int i = 0; i < firstDayOfWeek; i++){
System.out.print(" \t");
dayOfWeek++;
}
for(int i = 1; i <= lastDay; i++){
System.out.print(i + "\t");
dayOfWeek++;
if(dayOfWeek == 7){
System.out.println();
dayOfWeek = 0;
}
}
}
/*
* 指定した年月日の曜日を求める。戻り値と曜日の関係は
* 日曜日:0~土曜日:6
*/
public static int getDayOfWeek(int year, int month, int day) {
if(month <= 2){
month += 12;
year--;
}
int h = year/100, y = year%100;
// ツェラーの公式
int dayOfWeek = y + y/4 + h/4 - 2*h + 13*(month+1)/5 + day;
return (dayOfWeek+6)%7;
}
// 指定した年・月の最終日を返す
public static int getLastDay(int year, int month) {
int[] maxDay = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if(isLeapYear(year)) maxDay[2]++;
return maxDay[month];
}
// 引数の文字列をint型に変換する。数字で無かった場合は0を返す。
public static int toInt(String ss) {
try {
return Integer.parseInt(ss);
} catch (Exception e) {
return 0;
}
}
// 引数の年がうるう年かどうか判定する
public static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
}
}
-----------------終了-----------------

No.1
- 回答日時:
こんにちは
Javaにはjava.util.Calendarクラスという便利なクラスがあります。
もちろん質問者さんのように曜日計算などのメソッドを書いても良いですが、Calendarクラスを使ったほうが全体もすっきりとして良いと思います。
参考までに
参考URL:http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/ja …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- WordPress(ワードプレス) wordpressでphpを読み込みたい 1 2022/10/30 23:40
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- Java Java 配列<選挙> 4 2023/07/31 15:07
- C言語・C++・C# int tff(int clk) { static int state = 0; //状態 stat 1 2022/07/11 21:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンパイルできません
-
意味がわかりません
-
コンパイラが注意してくる
-
「配列定数は、イニシャライザ...
-
Java 初心者 int型の取り扱い方
-
メインが含まれていません
-
Threadに関するの質問
-
classを使って座標軸を求めるコ...
-
JAVAでホーナー法
-
javaでcsvファイル読込時の改行...
-
JAVA エラー 式の開始が不正で...
-
式の型は配列型で int に解決済...
-
javaでカレンダー作成
-
Javaで素数の表を表示させたい...
-
文字制限節約のためimportは省...
-
アプレットは初期化されていません
-
Javaのコピープログラムに...
-
JAVAでCの関数ポインタのような...
-
二次元配列の初期化の方法。
-
Stringの100と100.0を同一とみ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
メインが含まれていません
-
式の型は配列型で int に解決済...
-
Java 初心者 int型の取り扱い方
-
(Swing)JTextFieldを半角のみ入...
-
DataSet(DataTable)の使い方
-
javaでカレンダー作成
-
intが負の時に投げる例外はあり...
-
C#で実行時にメソッドの返り値...
-
JUnit4のアノテーションについて
-
6桁の数字を重複なしでランダム...
-
JAVA エラー 式の開始が不正で...
-
java spring でエラーが出て困...
-
C#でバブルソート
-
プログラムの作り方
-
全組み合わせの出力
-
SwingでJtableのヘッダ行が表示...
-
アンマネージDLLで、ダイアログ...
-
c# デリゲート関連の命名について
-
複数のボタンを配置し、それぞ...
おすすめ情報