Advertisement
Guest User

hendo el 5wl

a guest
Oct 14th, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.11 KB | None | 0 0
  1. import java.io.File;
  2.  
  3. import java.io.FileNotFoundException;
  4. import java.io.FileReader;
  5. import java.io.FileWriter;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.io.PrintWriter;
  9. import java.io.UnsupportedEncodingException;
  10. import java.util.ArrayList;
  11.  
  12. public class Calculator implements Icalculator {
  13. double[] arr = new double[2];
  14. String operator;
  15. ArrayList<String[]> data = new ArrayList<String[]>();
  16. int dataIndex = -1;
  17. int prevIndex = 0;
  18.  
  19. @Override
  20. public void input(String s) {
  21. // TODO Auto-generated method stub
  22. if (!s.matches("^-?\\d+(\\.\\d+)?(\\s+)?[-+*\\/](\\s+)?-?\\d+(\\.\\d+)?(\\s+)?$")) {
  23. operator = "error";
  24.  
  25. } else {
  26. s = s.replaceAll("\\s+", "");
  27.  
  28. String[] arrOfStr = s.split("[-+*\\/]");
  29. String[] arrOfStr1 = s.split("\\d+(\\.\\d+)?");
  30. operator = arrOfStr1[1].charAt(0) + "";
  31. int index = 0;
  32. for (String a : arrOfStr) {
  33. if (!a.isEmpty()) {
  34. if (index == 0 && s.charAt(0) == '-') {
  35. a = "-" + a;
  36. arr[index] = Double.parseDouble(a);
  37. } else if (index == 1 && (arrOfStr[1].equals("") || arrOfStr.length == 4)) {
  38. a = "-" + a;
  39. arr[index] = Double.parseDouble(a);
  40. }
  41.  
  42. else {
  43. arr[index] = Double.parseDouble(a);
  44.  
  45. }
  46. index++;
  47. }
  48. }
  49. index = 0;
  50. }
  51.  
  52. }
  53.  
  54. @Override
  55. public String getResult() {
  56. // TODO Auto-generated method stub
  57. if (operator.equals("error")) {
  58. return "invalid input";
  59. }
  60. double answer = 0;
  61. ;
  62. double given1 = arr[0];
  63.  
  64. double given2 = arr[1];
  65. if (operator.equals("+")) {
  66. answer = given1 + given2;
  67. } else if (operator.equals("-")) {
  68. answer = given1 - given2;
  69. } else if (operator.equals("*")) {
  70. answer = given1 * given2;
  71. } else if (operator.equals("/")) {
  72. if (given2 == 0) {
  73. answer = Integer.MIN_VALUE;
  74.  
  75. } else {
  76. answer = given1 / given2;
  77. }
  78. }
  79. if (answer == Integer.MIN_VALUE) {
  80. return "can't divide be zero";
  81. }
  82. String[] arr1 = new String[2];
  83. arr1[0] = given1 + operator + given2;
  84. arr1[1] = Double.toString(answer);
  85. dataIndex++;
  86.  
  87. dataIndex = dataIndex % 5;
  88. prevIndex = dataIndex;
  89. if (data.size() == 5) {
  90. for (int i = 0; i < 4; i++) {
  91. data.set(i, data.get(i + 1));
  92. }
  93. data.set(4, arr1);
  94. prevIndex = 4;
  95. } else {
  96. data.add(dataIndex, arr1);
  97. // System.out.println(prevIndex);
  98. }
  99.  
  100. return Double.toString(answer);
  101.  
  102. }
  103.  
  104. @Override
  105. public String current() {
  106. // TODO Auto-generated method stub
  107. return data.get(prevIndex)[0];
  108. }
  109.  
  110. @Override
  111. public String prev() {
  112. String answer = null;
  113.  
  114. prevIndex = prevIndex - 1;
  115. if (prevIndex >= 0) {
  116. answer = data.get(prevIndex)[1];
  117. } else {
  118. prevIndex++;
  119. }
  120.  
  121. return answer;
  122. }
  123.  
  124. @Override
  125. public String next() {
  126. // TODO Auto-generated method stub
  127. String answer = null;
  128. prevIndex = prevIndex + 1;
  129.  
  130. if (prevIndex < data.size() && prevIndex >= 0) {
  131. answer = data.get(prevIndex)[1];
  132.  
  133. } else {
  134. prevIndex--;
  135. }
  136.  
  137. return answer;
  138. }
  139.  
  140. @Override
  141. public void save() {
  142. // TODO Auto-generated method stub
  143.  
  144. FileWriter writer;
  145. try {
  146. writer = new FileWriter("save.txt");
  147. for (int i = 0; i < data.size(); i++) {
  148. writer.write(data.get(i)[0]);
  149. writer.write("\n");
  150. }
  151. writer.close();
  152.  
  153. } catch (IOException e) {
  154. // TODO Auto-generated catch block
  155. e.printStackTrace();
  156. }
  157.  
  158. }
  159.  
  160. @Override
  161. public void load() {
  162. // TODO Auto-generated method stub
  163. try {
  164. FileReader read = new FileReader("save.txt");
  165. int i;
  166. try {
  167. String s = "";
  168. String[] s1 = new String[2];
  169. data.clear();
  170. dataIndex = -1;
  171. int index=0;
  172. while ((i = read.read()) != -1) {
  173. if(index!=0&&i=='\n') s1[1]=getResult() ;
  174.  
  175. if (i != '\n') {
  176. s = s + (char) i;
  177. } else {
  178. index++;
  179. input(s);
  180. s1[0] = s;
  181. s = "";
  182. }
  183. }
  184. prevIndex = data.size() ;
  185. } catch (IOException e) {
  186. // TODO Auto-generated catch block
  187. e.printStackTrace();
  188. }
  189. } catch (FileNotFoundException e) {
  190. // TODO Auto-generated catch block
  191. e.printStackTrace();
  192. }
  193.  
  194. }
  195.  
  196. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement