人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

以下のように3月の日付けを携帯画面に表示します(文字または画像で)。
前後のクラスは省いてあります。3月以外の日になったときの処理にはどんな方法がありますか?
try?catch,if等・・・・

// Question.java

import java.util.*;

public class Question {
int year, month, date;
Hashtable tables;
static final int table2007[][][] = {

{ {0} },// 2月

{ //3月
{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}
},

{ {0} }, // 4月

};

Question() {
tables = new Hashtable();
tables.put(new Integer(2007), table2007);
}

public int[] getPattern() {
Calendar now = Calendar.getInstance();
year = now.get(Calendar.YEAR);
month = now.get(Calendar.MONTH)+1;
date = now.get(Calendar.DATE);
int[][][] table = (int[][][])tables.get(new Integer(year));
int pattern[] = table[month-1][date-1];
return pattern;
}

}




●質問者: MostInakappe
●カテゴリ:コンピュータ ゲーム
✍キーワード: Class 23 24 28 3月
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● tsyk
●0ポイント

なんだか私が以前に別の質問者に回答した内容によく似たコードですね(汗)

そのときに要求された処理が「日付によって取り出すパターン(配列)を変更する。そのパターンには特殊な法則があって計算式で生成できないので、全ての日付分を事前に定義しておく」という物だったため、あのような3次元配列(array[月][日][パターン])を用意したわけなので、単純に日付を表示するだけであれば、こんな面倒な処理はまったく不要です。

ご質問のコードでは3月以外の日付になったときに ArrayIndexOutOfBoundsException が発生しますが、それはデータを事前に用意していないから当然のことです。

ちょっと失礼な言い方になってしまいますが、書かれたコードの意味を理解しないで中途半端に流用を考えるよりも、ご自身がやりたい処理を初めから提示してアドバイスを求めるほうが良いのではないかと思いますよ。


2 ● tsyk
●500ポイント

3月以外の日になったときに「3月以外です」と表示させるだけならば、以下のように month をチェックして if/else で条件分岐を入れる方法があります。失敗するのを承知で table にアクセスして try/catch で例外を捕まえる方法は、本来の用法から考えると邪道だと思うので書きません。

public int[] getPattern() {
 Calendar now = Calendar.getInstance();
 year = now.get(Calendar.YEAR);
 month = now.get(Calendar.MONTH)+1;
 date = now.get(Calendar.DATE);
 if (month == 3) {
 int[][][] table = (int[][][])tables.get(new Integer(year));
 int pattern[] = table[month-1][date-1];
 return pattern;
 }
 else {
 System.out.println("3月以外です");
 return null;
 }
}

このようにした場合には getPattern() の呼び出し側で、戻り値が null かどうかのチェックを忘れないようにしないといけません。また、最初の回答で述べたように、3次元配列を誤用していそうな点が気になりますが、大丈夫でしょうか?

う?ん、果たしてこんな回答でイイのかなぁ……

◎質問者からの返答

tsyk様

ありがとうございました。今回のサンプル例示がよくなかったのですが、3次元配列は理解しております。またよろしくお願いいたします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ