diff --git a/ch03/Convert.java b/ch03/Convert.java index d31fe77..7f75210 100644 --- a/ch03/Convert.java +++ b/ch03/Convert.java @@ -12,16 +12,41 @@ public static void main(String[] args) { final int IN_PER_FOOT = 12; Scanner in = new Scanner(System.in); - // prompt the user and get the value - System.out.print("Exactly how many cm? "); - cm = in.nextDouble(); - - // convert and output the result - inches = (int) (cm / CM_PER_INCH); - feet = inches / IN_PER_FOOT; - remainder = inches % IN_PER_FOOT; - System.out.printf("%.2f cm = %d ft, %d in\n", - cm, feet, remainder); + System.out.print("Enter 1 to convert centimeters to feet and inches\n" + + "Enter 2 to convert feet and inches to centimeters\n" + + "Your choice: "); + + int choice = in.nextInt(); + + if (choice == 1) { + System.out.print("Exactly how many cm? "); + cm = in.nextDouble(); + + if (cm < 0) { + System.out.print("Please enter a positive value for centimeters."); + } else { + inches = (int) (cm / CM_PER_INCH); + feet = inches / IN_PER_FOOT; + remainder = inches % IN_PER_FOOT; + inches = inches - (feet * IN_PER_FOOT); + System.out.printf("%.2f cm = %d ft, %d in\n", cm, feet, inches); + } + } else if (choice == 2) { + System.out.print("Enter feet: "); + feet = in.nextInt(); + System.out.print("Enter inches: "); + inches = in.nextInt(); + + if (feet < 0 || inches < 0 || inches >= IN_PER_FOOT) { + System.out.println("Please enter valid and positive values for feet and inches."); + } else { + cm = (feet * IN_PER_FOOT + inches) * CM_PER_INCH; + System.out.printf("%d ft, %d in = %.2f cm\n", feet, inches, cm); + } + } else { + System.out.println("Invalid choice, please enter 1 or 2."); + } + } }