コンストラクタやメソッドで時計表示し何秒か時間を進めたり戻す

コンストラクタやメソッドで時計表示し何秒か時間を進めたり戻す

練習問題10の4

練習問題3までで作成した時計クラスに以下のメソッドを追加し、これを使用して、下の図に示すように、何秒か進めたり、戻したりできるプログラムを作成する。

 

 

追加メソッド
void increaseSecond(int n) ・・・・ 時刻をn秒進める(publicメンバ)
void decreaseSecond(int n) ・・・・ 時刻をn秒戻す(publicメンバ)

 

実行画面

時を入力 > 8

分を入力 > 5
秒を入力 > 13
08:05:13に設定されました。

 

進める(1)、戻す(2) 、終了(他の数)? > 1
何秒? > 70
08:06:23になりました。

 

進める(1)、戻す(2) 、終了(他の数)? >

解答例

class MyTime

{
private int hour, minute, second;
public void setTime(int h, int m, int s)
{
if(h>=24)
h = 23;
if(h<0)
h = 0;
if(m>=60)
m = 59;
if(m<0)
m = 0;
if(s>=60)
s = 59;
if(s<0)
s = 0;

hour = h;
minute = m;
second = s;
}
public String getTime()
{
String h, m, s;

 

if(hour<10)
h = "0" + hour;
else
h = "" + hour;
if(minute<10)
m = "0" + minute;
else
m = "" + minute;
if(second<10)
s = "0" + second;
else
s = "" + second;
return h + ":" + m + ":" + s;
}
public void increaseOneSecond()
{

second++;
if(second >= 60){
second = 0;
minute++;
}

 

if(minute >= 60){
minute = 0;
hour++;
}
if(hour >= 24){
hour = 0;
}
}
public void decreaseOneSecond()
{
second--;

 

if(second < 0){
second = 59;
minute--;
}

 

if(minute < 0){
minute = 59;
hour--;
}
if(hour < 0){
hour = 23;
}
}
public void increaseSecond(int n)
{
for(int i=1; i<=n; i++){
increaseOneSecond();
}
}
public void decreaseSecond(int n)
{

for(int i=1; i<=n; i++){
decreaseOneSecond();
}
}
}

 

import java.io.*;

public class ren10_4
{
public static void main(String[] args) throws IOException
{
BufferedReader br =
new BufferedReader( new InputStreamReader( System.in ) );

 

MyTime t = new MyTime();
System.out.print("時を入力 > ");
int h = Integer.parseInt( br.readLine() );
System.out.print("分を入力 > ");
int m = Integer.parseInt( br.readLine() );
System.out.print("秒を入力 > ");
int s = Integer.parseInt( br.readLine() );
t.setTime(h, m, s);
System.out.println(t.getTime() + "に設定されました");
System.out.println();
System.out.print("進める(1)、戻す(2) 、終了(他の数)? > ");
int menu = Integer.parseInt( br.readLine() );
while( 1 <= menu && menu <= 2 ){
System.out.print("何秒? > ");
int seconds = Integer.parseInt( br.readLine() );
switch( menu ){

case 1:
if(seconds > 0){
t.increaseSecond(seconds);
}
else{
t.decreaseSecond(-seconds);
}
break;
case 2:
if(seconds > 0){
t.decreaseSecond(seconds);
}
else{
t.increaseSecond(-seconds);
}
break;

 

default:
break;
}
System.out.println(t.getTime() + "に設定されました");
System.out.println();
System.out.print("進める(1)、戻す(2) 、終了(他の数)? > ");
menu = Integer.parseInt( br.readLine() );
}
System.out.println("終了します");
}
}

 

コンストラクタやメソッドで時計表示し何秒か時間を進めたり戻す関連ページ

連続して表示するメソッドを作る for文使用
メソッドを使用して、横幅高さの長方形を表示する
2つの整数の差を計算して表示する メソッド
3つの整数の最小値を返す メソッド
整数nの階乗を計算して表示する メソッド
整数の2乗を表示する メソッド
2乗と4乗を表示するメソッド
4つの整数の中で最小値を表示するメソッド
配列を宣言し、整数逆順に表示する メソッド
クラスを作成し、インスタンスに記憶し表示する
クラスにメソッドを使用する
クラスを作成し、インスタンスに記憶しメソッドを介して表示する
クラスを作成し、メインメソッドを実行し表示を確認する
コンストラクタやメソッドで時計表示
メンバ変数、コンストラクタ、メンバメソッドを使用し枚数表示する
メンバ変数、コンストラクタ、メンバメソッドを使用し水量表示する
メンバ変数、コンストラクタ、メンバメソッドを使用し位置表示する
メンバ変数、コンストラクタ、メンバメソッドを使用し財布の中身残量表示する
インスタンス配列を使用して、集計表示を行う コンストラクタ
フィールド変数がprivateで直接参照できないときに返すメソッド
インスタンスを2個生成し操作する
privateを使用して、操作する
インスタンスを複数生成し、操作する