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