Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Collections;
  5. import java.util.List;
  6.  
  7. public class Calculator {
  8. private String _baseNumber;
  9.  
  10. public Calculator() {
  11. this._baseNumber = "0";
  12. }
  13.  
  14. public Calculator(String _baseNumber) {
  15. this._baseNumber = _baseNumber;
  16. }
  17.  
  18. public Calculator(int _baseNumber) {
  19. this._baseNumber = Integer.toString(_baseNumber);
  20. }
  21.  
  22. public String add(String numToAdd) {
  23. if(_baseNumber.length()==0 || numToAdd.length() == 0)
  24. return "";
  25.  
  26. int overflow = 0;
  27. List<String> finalResult = new ArrayList<String>();
  28.  
  29. int num1CurrentIndex = _baseNumber.length() - 1;
  30. int num2CurrentIndex = numToAdd.length() - 1;
  31.  
  32. while(true){
  33.  
  34. int num1IndexInt;
  35. if(num1CurrentIndex >= 0)
  36. num1IndexInt = Integer.parseInt(Character.toString(_baseNumber.charAt(num1CurrentIndex)));
  37. else
  38. num1IndexInt = 0;
  39.  
  40. num1CurrentIndex--;
  41.  
  42. int num2IndexInt;
  43. if(num2CurrentIndex >= 0)
  44. num2IndexInt = Integer.parseInt(Character.toString(numToAdd.charAt(num2CurrentIndex)));
  45. else
  46. num2IndexInt = 0;
  47.  
  48. num2CurrentIndex--;
  49.  
  50.  
  51.  
  52. int result = num1IndexInt + num2IndexInt + overflow;
  53. if(result > 9){
  54. overflow = 1;
  55. result -= 10;
  56. }
  57. else
  58. overflow = 0;
  59.  
  60. finalResult.add(Integer.toString(result));
  61.  
  62.  
  63.  
  64. if((num1CurrentIndex < 0) && (num2CurrentIndex < 0)){
  65. finalResult.add(Integer.toString(overflow));
  66. break;
  67. }
  68. }
  69.  
  70. finalResult.remove(finalResult.size() - 1);
  71. Collections.reverse(finalResult);
  72. return String.join("", finalResult);
  73. }
  74.  
  75. public String multiply(String numToMultiply) {
  76.  
  77. if(_baseNumber.length()==0 || numToMultiply.length() == 0)
  78. return "";
  79. else if(_baseNumber.equals("0") || numToMultiply.equals("0"))
  80. return "0";
  81.  
  82. _baseNumber = new StringBuffer(_baseNumber).reverse().toString();
  83. numToMultiply = new StringBuffer(numToMultiply).reverse().toString();
  84.  
  85. int[] partialResults = new int[_baseNumber.length() + numToMultiply.length()];
  86.  
  87.  
  88. for (int i = 0; i < _baseNumber.length(); i++)
  89. {
  90. for (int j = 0; j < numToMultiply.length(); j++)
  91. partialResults[i + j] = partialResults[i + j] + (_baseNumber.charAt(i) - '0') * (numToMultiply.charAt(j) - '0');
  92. }
  93.  
  94. StringBuilder finalResult = new StringBuilder();
  95. for (int i = 0; i < partialResults.length; i++)
  96. {
  97. int digit = partialResults[i] % 10;
  98. int overflow = partialResults[i] / 10;
  99.  
  100. if(i < partialResults.length -1)
  101. {
  102. partialResults[i + 1] = partialResults[i + 1] + overflow;
  103. }
  104. finalResult.insert(0, digit);
  105.  
  106. }
  107.  
  108. if(finalResult.charAt(0) == '0')
  109. finalResult = new StringBuilder(finalResult.substring(1));
  110.  
  111. return finalResult.toString();
  112. }
  113.  
  114. public int Factorial(int n){
  115. if (n < 0)
  116. throw new IllegalArgumentException("n must be larger or equal to 0");
  117.  
  118. int result = 1;
  119. for (int i = 1; i <= n ; i++)
  120. result *= i;
  121.  
  122. return result;
  123. }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement