Program 3 (console)
The qualities that are most important to the Redding Elevator Company are safety and reliability. Both are achieved by high standards of design, manufacture and service. All elevators are serviced regularly, but even so, there will be unexpected failures. The long term goal is to minimise their frequency to enhance the quality reputation of the products and the company.
Each elevator's computerised controller maintains a log of the times it is put into service tup and the times at which it fails tdown. This log is transmitted to the company to build a statistical prole of the reliability of each elevator and, collectively, of each elevator model.
The main metric used to describe reliability is the mean time between failures (MTBF), the sum of all of the failure times tdown minus the time it last came into service tup divided by the number or failures.
MTBF = Σ(tdown - tup)/ number of failures
Write a program that can be used to read an extract from a log for one elevator and print the following statistics:
1. the total \uptime", that is the total time the elevator was in service, Σ(tdown - tup) (in years);
2. the number of failures; and
3. the MTBF (in years).
The log extract excludes scheduled times the elevator was taken out of service for maintenance. A typical log looks like this:
- Each line consists of a U to label a time as a tup or a D to label a time as a tdown, followed by the time in seconds since the elevator was rst put into service.
- The rst line will always indicate tup at 0 seconds.
- The last line is usually also a tup, though it is possible that the log has been uploaded while the elevator is out of service, and therefore the last line is a tdown.
- A fairly new elevator that has not failed yet may have a log with only one line in it.
File: S00000001.txt
U
|
0
|
D
|
15664610
|
U
|
15670184
|
D
|
30700326
|
U
|
30724536
|
D
|
37622324
|
U
|
37648485
|
D
|
60455362
|
U
|
60480874
|
D
|
79166234
|
U
|
79181602
|
D
|
95881395
|
U
|
95892167
|
Some more example log les: S00000002.txt (only one line); S00000003.txt (fnishes with a tdown); S00000004.txt (longer).
For the purposes of the calculations, assume there are 365:25 days per year. Your program should read a log le from standard input, using input redirection.
Example output for these four data fles:
$ java AnalyseOne < S00000001.txt
Total uptime = 3.035229865389003 (years)
Number of failures = 6
Mean time between failures = 0.5058716442315004 (years)
$ java AnalyseOne < S00000002.txt
No failures.
$ java AnalyseOne < S00000003.txt
Total uptime = 4.63133147007377 (years)
Number of failures = 3
Mean time between failures = 1.5437771566912568 (years)
$ java AnalyseOne < S00000004.txt
Total uptime = 13.717806709001954 (years)
Number of failures = 9
Mean time between failures = 1.5242007454446616 (years)
$