アットウィキロゴ

☆実習課題☆ 4-1

import jp.co.jip.st.common.*;//パッケージのインポート

class CheckDaysTest{
int Seireki,Tsuki,Hinichi;
public static void main(String args[]) {
try{
	CheckDays cd=new CheckDays(args[0],args[1]);
	cd.setData();
	cd.Data();
	cd.getData();
	System.out.println();
	System.out.println("例外発生時にはこの行は出力されません");
}
catch(ArrayIndexOutOfBoundsException e){
	System.out.println("引数は<西暦>と<年>の2 つです");
	}
	catch(NumberFormatException e){
	System.out.println("数値に変換できない型です");
	}
	catch(Exception e){
	System.out.println("例外:すべての例外をキャッチします");
	System.out.println("例外:" + e.getMessage());
          //UserException2をExceptionに継承しているためe.getMessage()で予期せぬエラーが発生しましたが表示される
	}
	finally{
	System.out.println("この行は例外に関わらず出力されます");
	}
}
}

package jp.co.jip.st.common;//パッケージ化

public class CheckDays{

int Seireki,Tsuki,Hinichi;
String seireki,tsuki;
 public CheckDays(String a,String b){
	 seireki=a;
	 tsuki=b;
 }
	public void setData()throws UserException2{
		Seireki=Integer.parseInt(seireki);
		Tsuki=Integer.parseInt(tsuki);
		if(Tsuki>12){
			throw new UserException2(Seireki,Tsuki);
		}
		else if(Tsuki<=0){
			throw new UserException2(Seireki,Tsuki);
		}
		else if(Seireki<0){
			throw new UserException2(Seireki,Tsuki);
		}
	}

	public void Data(){//月ごとの日数を調べるメソッド
	switch(Tsuki){
		case 1:
			Hinichi=31;
			break;
		case 2:
			if(Seireki%4==0){
				Hinichi=29;
			}
			if(Seireki%100==0){
				Hinichi=28;
			}
			if(Seireki%400==0){
				Hinichi=29;
			}
			else{
				Hinichi=28;
			}
			break;
		case 3:
			Hinichi=31;
			break;
		case 4:
			Hinichi=30;
			break;
		case 5:
			Hinichi=31;
			break;
		case 6:
			Hinichi=30;
			break;
		case 7:
			Hinichi=31;
			break;
		case 8:
			Hinichi=31;
			break;
		case 9:
			Hinichi=30;
			break;
		case 10:
			Hinichi=31;
			break;
		case 11:
			Hinichi=30;
			break;
		case 12:
			Hinichi=31;
			break;
		default:
		}
	}
public void getData(){
	System.out.print(Seireki+"年"+Tsuki+"月は、"+Hinichi+"日です。");
}
}


package jp.co.jip.st.common;//パッケージ化

public class UserException2 extends Exception{

int userErr;
int userInt;

public UserException2 (int err, int eInt){
	userErr = err;//西暦
	userInt = eInt;//月
}

public String getMessage(){
	if(userInt>12){
		System.out.println("<月> は1 から12 の数値を入力してください");
	}
	if(userInt<=0){
		System.out.println("<月> は1 から12 の数値を入力してください");
	}
	if(userErr<0){
		System.out.println("<西暦> は0 以上の数値を入力してください");
	}
	return "予期せぬエラーが発生しました";
}
}
最終更新:2009年10月28日 15:57