Advertisement
Guest User

Untitled

a guest
Jan 28th, 2015
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.29 KB | None | 0 0
  1. package org.metalcowrobotics.rapinterpreter;
  2.  
  3. import java.util.HashMap;
  4. import java.util.Map;
  5.  
  6. public class Unit{
  7. public class NonMatchingUnitTypeError extends Exception{
  8. public NonMatchingUnitTypeError(String a, String b){
  9. super("Unit types "+a+" and "+b+" are not of same type.");
  10. }
  11. };
  12.  
  13. public static Map<String, String> unitNames = new HashMap<String, String>();
  14. static{
  15. unitNames.put("ft", "feet");
  16. unitNames.put("feet", "feet");
  17. unitNames.put("foot", "feet");
  18.  
  19. unitNames.put("in", "inches");
  20. unitNames.put("inch", "inches");
  21. unitNames.put("inches", "inches");
  22.  
  23. unitNames.put("m", "meters");
  24. unitNames.put("meter", "meters");
  25. unitNames.put("meters", "meters");
  26.  
  27. unitNames.put("cm", "centimeters");
  28. unitNames.put("centimeter", "centimeters");
  29. unitNames.put("centimeters", "centimeters");
  30.  
  31. unitNames.put("yd", "yards");
  32. unitNames.put("yds", "yards");
  33. unitNames.put("yard", "yards");
  34. unitNames.put("yards", "yards");
  35.  
  36. unitNames.put("s", "seconds");
  37. unitNames.put("sec", "seconds");
  38. unitNames.put("secs", "seconds");
  39. unitNames.put("seconds", "seconds");
  40. unitNames.put("second", "seconds");
  41.  
  42. unitNames.put("ms", "milliseconds");
  43. unitNames.put("msec", "milliseconds");
  44. unitNames.put("msecs", "milliseconds");
  45. unitNames.put("milliseconds", "milliseconds");
  46. unitNames.put("millisecond", "milliseconds");
  47.  
  48. unitNames.put("min", "minutes");
  49. unitNames.put("mins", "minutes");
  50. unitNames.put("minute", "minutes");
  51. unitNames.put("minutes", "minutes");
  52.  
  53. unitNames.put("pct", "percent");
  54. unitNames.put("percent", "percent");
  55. unitNames.put("%", "percent");
  56.  
  57. unitNames.put("points", "points");
  58. unitNames.put("point", "points");
  59. unitNames.put("pts", "points");
  60. unitNames.put("p", "points");
  61.  
  62. unitNames.put("rad", "radians");
  63. unitNames.put("radians", "radians");
  64. unitNames.put("radian", "radians");
  65. unitNames.put("rads", "radians");
  66.  
  67. unitNames.put("deg", "degrees");
  68. unitNames.put("degrees", "degrees");
  69. unitNames.put("degree", "degrees");
  70. unitNames.put("degs", "degrees");
  71.  
  72. unitNames.put("rev", "revolutions");
  73. unitNames.put("revs", "revolutions");
  74. unitNames.put("revolution", "revolutions");
  75. unitNames.put("revolutions", "revolutions");
  76. }
  77.  
  78. public static Map<String, String> unitTypes = new HashMap<String, String>();
  79. static{
  80. unitTypes.put("feet", "length");
  81. unitTypes.put("inches", "length");
  82. unitTypes.put("meters", "length");
  83. unitTypes.put("centimeters", "length");
  84. unitTypes.put("yards", "length");
  85.  
  86. unitTypes.put("seconds", "time");
  87. unitTypes.put("milliseconds", "time");
  88. unitTypes.put("minutes", "time");
  89.  
  90. unitTypes.put("percent", "amount");
  91. unitTypes.put("points", "amount");
  92.  
  93. unitTypes.put("radians", "rotational");
  94. unitTypes.put("degrees", "rotational");
  95. unitTypes.put("revolutions", "rotational");
  96. }
  97.  
  98. public static Map<String, Double> unitValues = new HashMap<String, Double>();
  99. static{
  100. unitValues.put("feet", 1.0);
  101. unitValues.put("inches", 1/12.0);
  102. unitValues.put("yards", 3.0);
  103. unitValues.put("meters", 3.28);
  104. unitValues.put("centimeters", 0.0328);
  105.  
  106. unitValues.put("seconds", 1.0);
  107. unitValues.put("milliseconds", 0.001);
  108. unitValues.put("minutes", 60.0);
  109.  
  110. unitValues.put("percent", 1.0);
  111. unitValues.put("points", 100.0);
  112.  
  113. unitValues.put("radians", 57.2957795);
  114. unitValues.put("degrees", 1.0);
  115. unitValues.put("revolutions", 360.0);
  116.  
  117. }
  118.  
  119.  
  120. public Double amount;
  121. public String unit;
  122. public Unit(Double amount, String unit){
  123. this.amount=amount;
  124. this.unit=unitNames.get(unit);
  125. }
  126. public String toString(){
  127. return amount.toString()+" "+unit;
  128. }
  129.  
  130. public Unit convertTo(String type) throws NonMatchingUnitTypeError{
  131. String newUnitName = unitNames.get(type);
  132. if (!unitTypes.get(newUnitName).equals(unitTypes.get(unit)))
  133. throw new NonMatchingUnitTypeError(unit, newUnitName);
  134. return new Unit(this.amount*unitValues.get(unit)/unitValues.get(newUnitName), type);
  135. }
  136.  
  137. public Unit add(Unit otherUnit) throws NonMatchingUnitTypeError{
  138. if (!unitTypes.get(otherUnit.unit).equals(unitTypes.get(this.unit)))
  139. throw new NonMatchingUnitTypeError(this.unit, otherUnit.unit);
  140. return new Unit(this.amount+otherUnit.amount*unitValues.get(otherUnit.unit)/unitValues.get(this.unit), this.unit);
  141. }
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement