
こんにちは。今回も宜しくお願いします<(_ _)>
画面から入力された日付(生年月日)の妥当性をチェックしたいのですが、それにはまずクラス(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日と入力したり、とか)として、画面にて再入力を促すメッセージをだそうと思っていたのですが、この考え方はどこか変でしょうか?
お手数お掛けいたしますが、宜しくお願い致します<(_ _)>
No.1ベストアンサー
- 回答日時:
> year = g.get( Calendar.YEAR );
> month = g.get( Calendar.JUNE );
> day = g.get( Calendar.DATE );
どういう動作を期待しているのかわかりませんが、月を取得したいのなら
month = g.get( Calendar.MONTH );
です。これを実行すると、次の疑問が出るでしょう。「11月なのに"10"が出てくる!」と。これはAPIの仕様で、1月は"0"、2月は"1"、……、12月は"11"になっているのです。
>GregorianCalendarに自分の好きな年月を与えたいのですが、
>g.get( 1980 );
>とすると
与えるメソッドはget()ではなくてset()です。APIリファレンスをよく見てください。
参考URL:http://java.sun.com/j2se/1.4/ja/docs/ja/api/java …
回答ありがとうございました。
うーん、お恥ずかしいことにgetとsetを混同していました。
month = g.get( Calendar.JUNE );
は、Calendar.JUNE (6月)をオブジェクトに関連付けてから、monthに代入しているつもりになっていました。
setを使ってCalendar.JUNE を関連付けたところ、getメソッドできちんと「5」が返ってきました。
アホなこと質問して申し訳ありませんでした。
No.2
- 回答日時:
どうも、こんにちは。
質問の題名にかいてあることですが、うるう年かどうかを判定したいのでしょうか?GregorianCalendarクラスのisLeapYear()メソッドではんていできますよ。
isLeapYearの引数に年を入れてやるといいです。
質問文に書いてあることは、#1さんが答えてくれているみたいなんで。
では、大変でしょうけど、がんばってください。
お忙しいところお手数おかけして申し訳ありません。
今、自分の質問とAPIを見比べて「ちゃんと見ろやー!」と叫んでおります。
すっごい勘違いしておりました。
とても恥ずかしいです。
>isLeapYearの引数に年を入れてやるといいです。
ありがとうございます。
>では、大変でしょうけど、がんばってください。
簡単なことを1人で難しくしている、という感じもしますが、頑張りたいと思います。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- 英語 "this day"が当日か今日を表すのかの使い分け方等について 5 2023/08/08 14:29
- WordPress(ワードプレス) wordpressでphpを読み込みたい 1 2022/10/30 23:40
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- Visual Basic(VBA) 【再投稿】VBAのシフト表でバグが出て困っています 3 2022/09/24 08:29
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) ExcelのVBAでシフト表を作っていますが、バグが出て困っています 2 2022/09/13 11:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンストラクタの引数の中のnew?
-
中カッコ{}だけの記述について
-
System.exit()の値を取得したい
-
変数を動的に利用するには?
-
Javaの問題集の解答が意味不明です
-
DESを使用した暗号化/復号化処...
-
うるう年判定
-
JavaのEnum型について
-
Eclipseのパッケージについて
-
コマンドライン引数の*(アフ...
-
JAVAのComparableについて・・・
-
replaceAllが使えない場合の取...
-
processingである処理をした画...
-
現在時刻をYYYY-MM-DDThh:mm:ss...
-
JSPやサーブレットでSystem.out...
-
動的配列が存在(要素が有る)か...
-
Javaで改行などが出来ないのです。
-
IF関数でEmpty値を設定する方法。
-
オブジェクトの中のプロパティ...
-
Java Struts ~に対するゲッタ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数を動的に利用するには?
-
中カッコ{}だけの記述について
-
Javaでlog4jを使ってログ出力を...
-
プログラミングの問題です。大...
-
コンストラクタの引数の中のnew?
-
Socketの接続のタイムアウトを...
-
NoSuchMethodErrorが解決できま...
-
System.exit()の値を取得したい
-
初心者なので教えてほしいです。
-
インタフェイス実装と抽象クラ...
-
javaのプログラミングで作るRPG...
-
C# DatagridviewにExcelシート...
-
replaceAllが使えない場合の取...
-
クラスを使った電卓のプログラム
-
ArrayList でスタックを
-
元旦からの日数を入力して、何...
-
日本語が文字コードによっては...
-
Processing :指定フォルダ内の...
-
【正規表現】< と > に囲まれた...
-
GetterとSetterをやったのに。
おすすめ情報