###前提・実現したいこと
プログラム自体は問題なく動作します。
時間/分/秒を入力してもらい、指定した時間に近づく度にアラームを鳴らすという機能です。
(文字列表示だけですが、文字列を他のプログラムへコピペする動作が入るので問題ありません。)
Class,Methodをどの程度分類すれば良いのか、
このコードはこのファイルに移したほうがいい、
新しくClass,Methodを作る、または削除するべき等、
理由を含めた様々な指摘を頂きたいと思い、こちらへ質問させて頂きました。
ご回答よろしくお願いします。
###該当のソースコード
Java
1Main.java 2 3import java.io.IOException; 4class Main 5{ 6 public static void main(String[] args) throws IOException 7 { 8 AskSecond asksec = new AskSecond(); //インスタンス生成 9 int keisuu = asksec.timeCase(); //係数を取得 10 int second = asksec.askSecond(keisuu); //timeCase,askSecondメソッドを実行 11 Output result = new Output(); //インスタンス生成 12 result.OutputFunc(second); //secondをOutputFuncメソッドに送る 13 } 14 15}
Java
1AskSecond.java 2 3import java.io.BufferedReader; 4import java.io.IOException; 5import java.io.InputStreamReader; 6 7class AskSecond 8{ 9 BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); //リーダーの作成 10 11 int timeCase() throws IOException //例外の時に投げるように 12 { 13 byte unit = 0; //変数宣言 14 int keisuu = 1; 15 16 System.out.println("指定した残り時間が20,10,5,3,1分になるとアラームを鳴らすためのコマンドを表示します。" 17 + "\n単位を「1:時間,2:分,3:秒」のいずれかの数字で答えてください。"); 18 System.out.print("単位:"); 19 20 unit = Byte.parseByte(br.readLine()); //選択肢入力 21 if (unit == 1) keisuu = (3600); //時間なら60*60=3600倍 22 if (unit == 2) keisuu = (60); //分なら60倍 23 if (unit == 3) keisuu = (1); //秒ならそのまま 24 25 if (unit <1 || unit > 3) //エラー 26 { 27 System.out.println("不正な値です。もう一度入力してください。"); 28 keisuu = timeCase(); //不正な場合もう一度メソッド呼び出し 29 } 30 31 return keisuu; 32 33 } 34 35 int askSecond(int keisuu) throws IOException //例外の時に投げるように 36 { 37 double time = 0.0; 38 39 System.out.println("指定する時間を入力してください。"); 40 System.out.print("時間:"); 41 42 time = Double.parseDouble(br.readLine()); //選択肢入力 43 double second = time*keisuu; //秒数へ補正 44 45 return ((int)second); //Mainに秒数を送る 46 47 } 48 49}
Java
1Output.java 2 3class Output 4{ 5 Output() 6 { 7 System.out.println("結果を出力します。1行ずつコピー,ペーストをしてください。"); 8 } 9 10 void OutputFunc(int second) 11 { 12 NegaSec negasec = new NegaSec(); 13 Title title = new Title(); 14 for(int i=0;i<title.notice.length;i++) 15 { 16 if (second + negasec.cases[i]<=0) return; //0秒以下のものを表示する前に終了させる 17 System.out.println("[アラーム発生:(全員)]:./sound/" + title.notice[i] + 18 ".mp3:" + (second + negasec.cases[i]) + "秒後"); 19 } 20 } 21}
Java
1NegaSec.java 2 3class NegaSec 4{ 5 final int[] cases = {0,-60,-180,-300,-600,-1200}; 6}
Java
1Title.java 2 3class Title 4{ 5 final String[] notice = {"alarm","left1","left3","left5","left10","left20"}; //再生するファイル名を残り時間昇順に書く。 6}
###補足情報(言語/FW/ツール等のバージョンなど)
JavaSE-1.8
Eclipse Neon使用
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/30 14:30