質問させてください。javaをはじめ2週間くらいのものなので理解が遅いかもしれません。
システム時刻から入力した時刻を引いた時間を表示するという演習問題なのですが
フローを書き、なんとなくは自分なりにプログラムに起こしてみたのですがよくわかりません。
時刻がhh:mm:ss形式、時、分、秒の文字列に数字以外の文字が含まれていないこと
が条件となっています。
どのようにすれば解けるか、などの解答への導きやこの演習問題に模範解答がないので
自分のプログラムと見比べて考えるための模範解答などを教えてくれると嬉しいです。
package enshu; import java.text.SimpleDateFormat; import java.util.Date; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Enshuu { public static void main(String[] args) throws IOException{ int f; int g; int k; BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String str1=br.readLine(); String str2=br.readLine(); String str3=br.readLine(); Date d = new Date(); SimpleDateFormat d2 = new SimpleDateFormat("HHmmss"); String c2 = d2.format(d); boolean check = Enshuu14Hhmms.timecheck(str1,str2,str3,c2); if(!check){ return; } String str4 = str1 + str2 + str3; int dd = Integer.parseInt(str4); int ee = Integer.parseInt(c2); if(dd > ee){ f = dd*3600*60-ee*3600*60; int hour = f / 3600; int min = (f%3600) / 60; int sec = f % 60; System.out.println(hour+"時"+min+"分"+sec+"秒"); }else if(ee > dd){ g = ee*3600*60-dd*3600*60; int hour = g / 3600; int min = (g%3600) / 60; int sec = g % 60; System.out.println(hour+"時"+min+"分"+sec+"秒"); } else{ k = 0; System.out.println("0時間0分0秒"); } } } package enshu; public class EnshuuHhmms { public static boolean timecheck(String h,String m,String s,String c2){ try{ String a = c2.substring(0,2); if(a.length()<2 || a.length()>2){ System.out.println("error"); return false; } String b = c2.substring(2,4); if(b.length()<2 || b.length()>2){ System.out.println("error"); return false; } String c = c2.substring(4,6); if(c.length()<2 || c.length()>2){ System.out.println("error"); return false; } if(h.length()<2 || h.length()>2){ System.out.println("error"); return false; } if(m.length()<2 || m.length()>2){ System.out.println("error"); return false; } if(s.length()<2 || s.length()>2){ System.out.println("error"); return false; } //入力 Integer.parseInt(h); Integer.parseInt(m); Integer.parseInt(s); //システム Integer.parseInt(a); Integer.parseInt(b); Integer.parseInt(c); System.out.println("正常"); return true; } catch (NumberFormatException e) { System.out.println("エラー"); return false; } } }
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/22 05:52