前提・実現したいこと
javaでカレンダーシステムを制作しています。
listコマンドでうまく検索したキーワードや範囲を表示させたいです。
case"dt"以外のcase文は実行することができました!
case"dt"も実行はできていますが、日付が不正ですと表示されてしまうことから
case"dt"のの引数に問題があると考えています。
(学校の課題なのでcase文以外は合っていると思います。)
発生している問題・エラーメッセージ
case"dt"も実行はできていますが、日付が不正ですと表示されてしまう
該当のソースコード
//予定を一覧表示する
//list>
private void listSchedules(String[] cmd){ if(cmd.length==1){ //第2引数がない場合すべての予定を一覧表示する listAllSchedules(); return; } switch(cmd[1]){ //第2引数で分岐する case "d" : listBitweenDates(cmd[2],cmd[3]);break; //日付範囲を指定して一覧表示 case "dt":listBitweenDateTimes(cmd[2]+" "+cmd[2],cmd[3]+" "+cmd[3]);break; //日付と時刻範囲を指定 case "k":listContainKeyword(cmd[2]);break; //キーワードを含む予定 } } //すべての予定一覧表示する private void listAllSchedules(){ for(Schedule s:sc_list) //登録された順で予定を取り出し msg(" "+s);//表示する } //指定したキーワードを含む予定を一覧表示する private void listContainKeyword(String kw){ for(Schedule s:sc_list){ if(s.content.indexOf(kw)!=-1) //キーワードを含む msg(" "+s); //表示する } } //指定した日付の間の予定を一覧表示する private void listBitweenDates(String s1,String s2){ listBitweenDateTimes(s1+" 00:00",s2+" 23:59"); //時刻を追加 } private void listBitweenDateTimes(String s1,String s2){ try{ if(s1.charAt(0)=='-') s1="1900/1/1 00:00"; //第1日時が-の場合 if(s2.charAt(0)=='-') s2="9999/12/31 23:59"; //第2日時が-の場合 SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd hh:mm"); Date d1=sdf.parse(s1); //日時から日付の生成 Date d2=sdf.parse(s2); if(d1.compareTo(d2)>0){ Date t=d1; d1=d2; d2=t; //入れ替える } for(Schedule s:sc_list){ if(s.date.compareTo(d1)>=0 && //予定の日時がd1以上で s.date.compareTo(d2)<=0) //d2以下なら、 msg(" "+s); } }catch(ParseException e){ msg("日付が不正です。"); } }
###試したこと
引数が間違っていると考え
case "dt":listBitweenDateTimes(cmd[2]+" "+cmd[3],cmd[4]+" "+cmd[5]);break;
で実行してみたが変わらなかった。
回答2件
あなたの回答
tips
プレビュー