Глава 4
Задача 4.11 "Длина дорожек компакт диска и обработка иключительных ситуаций."
Модифицируйте задачу 4.10, используя обычные средства ввода-вывода языка Java( а так же класс Stream). Чтобы сигнализировать программе о том, что уже введена инф о последней дорожке, используйте комбинации клавиш (Ctrl-D, Ctrl-Z), а так же исключительные ситуации.
Решение
Поскольку я не знаю как использовать указанные клавиши для выхода из программы, я использую переменную exit типа int, присваивая ей отрицательное значение.
Код программы:
import java.io.*;
import javagently.*;
class RoadOfDisk {
RoadOfDisk() throws IOException {
Time t;
Time sum = new Time(0,0);
Stream in = new Stream(System.in);
for (; ;) {
System.out.print("Enter 0 to continue or -1 to exit");
int exit = in.readInt();
if(exit == -1)break;
System.out.println(" ");
System.out.print("Enter hours");
int hour = in.readInt();
System.out.print("Enter minutes");
int min = in.readInt();
t = new Time(hour,min);
int min1 = (int)(t.hour*60 + t.min);
sum.addTime(min1);
System.out.println("Sound trak time - " + t+"\nCurrent summ of sound time = " + sum );
}//end for
System.out.println("Total sound time of disk = " + sum );
}
public static void main (String[] args) throws IOException {
new RoadOfDisk();
}
}
class Time {
int hour;
long min;
Time (int h, int m) {
hour = h;
min = m;
}
Time (int mins) {
hour = mins / 60;
min = mins % 60;
}
Time (double t) {
hour = (int) t;
min = Math.round(t*100 - hour*100);
}
Time (Time t) {
hour = t.hour;
min = t.min;
}
void addTime (int m) {
min +=m;
hour+= min / 60;
min %= 60;
}
boolean lessThan (Time t) {
return hour < t.hour | (hour==t.hour & min < t.min);
}
public String toString () {
if(min<10)
return hour + ":0" + min + " " ;
else
return hour + ":" + min + " ";
}
}
Результат :
Назад |
Начало урока |
Вверх |
Вперед
Содержание