Read in a time such as 3 pm and print the equivalent military hour (such as 15).
ID: 3574883 • Letter: R
Question
Read in a time such as 3 pm and print the equivalent military hour (such as 15). Validate the input.
If the input doesn’t start with an integer, print: Error: Not an integer.
If the number isn’t between 1 and 12, print: Error: The hour must be between 1 and 12.
If the suffix isn’t "am" or "pm", print: Error: The suffix must be am or pm.
Complete the following file:
TimeReader.java
import java.util.Scanner;
public class TimeReader
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
if (. . .)
{
int hour = in.nextInt();
if (. . .)
{
String suffix = in.next();
if (. . .)
{
// Convert hour to military time
System.out.println(hour);
}
else
{
System.out.println("Error: The suffix must be am or pm.");
}
}
else
{
System.out.println("Error: The hour must be between 1 and 12.");
}
}
else
{
System.out.println("Error: Not an integer.");
}
}
}
Explanation / Answer
import java.util.Scanner;
public class TimeReader
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
String a = in.next();
if (a.charAt(0)>=48 && a.charAt(0)<58 )
{
int hour = Integer.parseInt(a);
if (hour>=1 && hour<=12)
{
String suffix = in.next();
if (suffix.endsWith("am") || suffix.endsWith("pm"))
{
// Convert hour to military time
if(suffix.endsWith("am"))
System.out.println(hour);
else
{
if(hour==12)System.out.println(0);
else System.out.println(hour+12);
}
}
else
{
System.out.println("Error: The suffix must be am or pm.");
}
}
else
{
System.out.println("Error: The hour must be between 1 and 12.");
}
}
else
{
System.out.println("Error: Not an integer.");
}
}
}
ouput:-
run:
3 pm
15
BUILD SUCCESSFUL (total time: 8 seconds)
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.