1 | /** |
2 | * Copyright (C) 2010-2011 Diego Torres Milano |
3 | */ |
4 | package com.example.aatg.tc; |
5 | |
6 | /** |
7 | * The Temperature Converter. |
8 | * |
9 | * @author diego |
10 | * |
11 | */ |
12 | public class TemperatureConverter /*implements Converter*/ { |
13 | |
14 | public static final double ABSOLUTE_ZERO_C = -273.15d; |
15 | public static final double ABSOLUTE_ZERO_F = -459.67d; |
16 | |
17 | public static final String ERROR_MESSAGE_BELOW_ZERO_FMT = |
18 | "Invalid temperature: %.2f%c below absolute zero"; |
19 | |
20 | /** |
21 | * C2F: celsiusToFahrenheit |
22 | * F2C: fahrenheitToCelsius |
23 | */ |
24 | public static enum OP { C2F, F2C }; |
25 | |
26 | public static double fahrenheitToCelsius(double f) { |
27 | if (f < ABSOLUTE_ZERO_F) { |
28 | throw new InvalidTemperatureException( |
29 | String.format(ERROR_MESSAGE_BELOW_ZERO_FMT, f, 'F')); |
30 | } |
31 | return ((f - 32) / 1.8d); |
32 | } |
33 | |
34 | public static double celsiusToFahrenheit(double c) { |
35 | if (c < ABSOLUTE_ZERO_C) { |
36 | throw new InvalidTemperatureException( |
37 | String.format(ERROR_MESSAGE_BELOW_ZERO_FMT, c, 'C')); |
38 | } |
39 | return (c * 1.8d + 32); |
40 | } |
41 | |
42 | } |