フィールド変数がprivateで直接参照できないときに返すメソッド
練習問題11の2
Javaプログラミング10日目の練習4までに作成した時計クラスに対して、さらにメソッドを追加する。例えば、以下のようなものなど。
「時」や「分」や「秒」を返すメソッド
(フィールド変数がprivateで直接参照できないため、必要といえる)
00:00:00からの総秒数を返すメソッド
void addTime(MyTime a) ・・・・引数に与えられた時計クラスのインスタンスが持つ時刻を加算する。
解答例
{
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();
}
}
public int getHour()
{
return hour;
}
public int getMinute()
{
return minute;
}
public int getSecond()
{
return second;
}
public int getTotalSeconds()
{
return hour*3600 + minute*60 + second;
}
public void addTime(MyTime a)
{
int seconds1 = getTotalSeconds();
int seconds2 = a.getTotalSeconds();
int totalSeconds = seconds1 + seconds2;
totalSeconds %= 86400;
hour = totalSeconds / 3600;
minute = (totalSeconds % 3600) / 60;
second = totalSeconds % 60;
}
}
public class ren11_2
{
public static void main(String[] args) throws IOException
{
BufferedReader br =
new BufferedReader( new InputStreamReader( System.in ) );
MyTime t1 = new MyTime();
MyTime t2 = new MyTime();
System.out.print("時刻1の「時」を入力 > ");
int h = Integer.parseInt( br.readLine() );
System.out.print("時刻1の「分」を入力 > ");
int m = Integer.parseInt( br.readLine() );
System.out.print("時刻1の「秒」を入力 > ");
int s = Integer.parseInt( br.readLine() );
t1.setTime(h, m, s);
System.out.println(t1.getTime() + "に設定されました");
System.out.println();
System.out.println("「時」の値は " + t1.getHour() + " です。");
System.out.println("「分」の値は " + t1.getMinute() + " です。");
System.out.println("「秒」の値は " + t1.getSecond() + " です。");
System.out.println("00:00:00からの総秒数は " + t1.getTotalSeconds() + " です。");
System.out.print("時刻2の「時」を入力 > ");
h = Integer.parseInt( br.readLine() );
System.out.print("時刻2の「分」を入力 > ");
m = Integer.parseInt( br.readLine() );
System.out.print("時刻2の「秒」を入力 > ");
s = Integer.parseInt( br.readLine() );
t2.setTime(h, m, s);
t1.addTime(t2);
System.out.println("時刻1に時刻2を加算した時刻は " + t1.getTime() + " です。");
}
}
フィールド変数がprivateで直接参照できないときに返すメソッド関連ページ
- 連続して表示するメソッドを作る for文使用
- メソッドを使用して、横幅高さの長方形を表示する
- 2つの整数の差を計算して表示する メソッド
- 3つの整数の最小値を返す メソッド
- 整数nの階乗を計算して表示する メソッド
- 整数の2乗を表示する メソッド
- 2乗と4乗を表示するメソッド
- 4つの整数の中で最小値を表示するメソッド
- 配列を宣言し、整数逆順に表示する メソッド
- クラスを作成し、インスタンスに記憶し表示する
- クラスにメソッドを使用する
- クラスを作成し、インスタンスに記憶しメソッドを介して表示する
- クラスを作成し、メインメソッドを実行し表示を確認する
- コンストラクタやメソッドで時計表示
- コンストラクタやメソッドで時計表示し何秒か時間を進めたり戻す
- メンバ変数、コンストラクタ、メンバメソッドを使用し枚数表示する
- メンバ変数、コンストラクタ、メンバメソッドを使用し水量表示する
- メンバ変数、コンストラクタ、メンバメソッドを使用し位置表示する
- メンバ変数、コンストラクタ、メンバメソッドを使用し財布の中身残量表示する
- インスタンス配列を使用して、集計表示を行う コンストラクタ
- インスタンスを2個生成し操作する
- privateを使用して、操作する
- インスタンスを複数生成し、操作する