Given a time in numbers we can convert it into words. For example :
5 : 00 —— five o’clock
5 : 10 —— ten minutes past five
5 : 15 —— quarter past five
5 : 30 —— half past five
5 : 40 —— twenty minutes to six
5 : 45 —— quarter to six
5 : 47 —— thirteen minutes to six
Write a program which first inputs two
integers, the first between 1 and 12 (both inclusive) and second between
0 and 59 (both inclusive) and then prints out the time they represent,
in words.
Your program should follow the format of the examples above.
SAMPLE DATA :
1. INPUT :
TIME : 3,0
OUTPUT : 3 : 00 Three o’ clock
2. INPUT :
TIME : 7,29
OUTPUT : 7 : 29 Twenty nine minutes past seven
3. INPUT :
TIME : 6,34
OUTPUT : 6 : 34 Twenty six minutes to seven
4. INPUT :
TIME : 12,1
OUTPUT : 12 : 01 One minute past Twelve
5. INPUT :
TIME : 12,45
OUTPUT : 12 : 45 Quarter to One
6. INPUT :
TIME : 10,59
OUTPUT : 10 : 59 One minute to Eleven
7. INPUT :
TIME : 14,60
OUTPUT : Incorrect Input
Test your program for the data values given in the examples above and some random data.
PROGRAM:-
import java.io.*;
public class TimeInWords
{
public static void main(String args[])throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
/* Inputting hours and minutes */
System.out.print("Enter Hours : ");
int h=Integer.parseInt(br.readLine());
System.out.print("Enter Minutes : ");
int m=Integer.parseInt(br.readLine());
if((h>=1 && h<=12) && (m>=0 && m<=59)) // checking whether given input is legal or not.
{
/* creating an array containing numbers from 1-29 in words */
String words[]={"", "One", "Two", "Three", "Four", "Five", "Six","Seven", "Eight", "Nine","Ten",
"Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen",
"Twenty","Twenty one", "Twenty two", "Twenty three", "Twenty four", "Twenty five",
"Twenty six","Twenty seven","Twenty eight", "Twenty nine"};
/* The below code is for finding whether to print the word 'minute' or 'minutes' */
String plu, a;
if(m == 1 || m == 59)
plu = "Minute";
else
plu = "Minutes";
/* When we have minutes from 31-59, we print the hour ahead of the given hour
* like 6:55 will be 5 minutes to 7 and not 5 minutes to 6
* when we print the hour ahead of the given hour, we face a problem at hour = 12
* because if we print an hour ahead of 12, it will be thirteen, but we want 1
* so the below code checks this & decides what hour to print in words when minutes is from 31-59
*/
if(h==12)
a = words[1]; //storing 'one' when hour is 12
else
a = words[h+1]; //if hour is not 12, then storing in words, an hour ahead of given hour
/* The below code checks minutes and accordingly prints the time in words using array. */
System.out.print("Output : "+h+":"+m+" ----- "); //printing the given time in numbers
if(m==0)
System.out.println(words[h]+" O' clock");
else if(m==15)
System.out.println("Quarter past "+words[h]);
else if(m==30)
System.out.println("Half past "+words[h]);
else if(m==45)
System.out.println("Quarter to "+a);
else if(m<30) // condition for minutes between 1-29
System.out.println(words[m]+" "+plu+" past "+words[h]);
else // condition for minutes between 31-59
System.out.println(words[60-m]+" "+plu+" to "+a);
} //end of outer if
else
System.out.println("Invalid Input !"); //printing error message for illegal input
}
}
Enter Hours : 7
Enter Minutes : 16
Output : 7:16 —– Sixteen Minutes past Seven