Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.List;
- public class Calculator {
- private String _baseNumber;
- public Calculator() {
- this._baseNumber = "0";
- }
- public Calculator(String _baseNumber) {
- this._baseNumber = _baseNumber;
- }
- public Calculator(int _baseNumber) {
- this._baseNumber = Integer.toString(_baseNumber);
- }
- public String add(String numToAdd) {
- if(_baseNumber.length()==0 || numToAdd.length() == 0)
- return "";
- int overflow = 0;
- List<String> finalResult = new ArrayList<String>();
- int num1CurrentIndex = _baseNumber.length() - 1;
- int num2CurrentIndex = numToAdd.length() - 1;
- while(true){
- int num1IndexInt;
- if(num1CurrentIndex >= 0)
- num1IndexInt = Integer.parseInt(Character.toString(_baseNumber.charAt(num1CurrentIndex)));
- else
- num1IndexInt = 0;
- num1CurrentIndex--;
- int num2IndexInt;
- if(num2CurrentIndex >= 0)
- num2IndexInt = Integer.parseInt(Character.toString(numToAdd.charAt(num2CurrentIndex)));
- else
- num2IndexInt = 0;
- num2CurrentIndex--;
- int result = num1IndexInt + num2IndexInt + overflow;
- if(result > 9){
- overflow = 1;
- result -= 10;
- }
- else
- overflow = 0;
- finalResult.add(Integer.toString(result));
- if((num1CurrentIndex < 0) && (num2CurrentIndex < 0)){
- finalResult.add(Integer.toString(overflow));
- break;
- }
- }
- finalResult.remove(finalResult.size() - 1);
- Collections.reverse(finalResult);
- return String.join("", finalResult);
- }
- public String multiply(String numToMultiply) {
- if(_baseNumber.length()==0 || numToMultiply.length() == 0)
- return "";
- else if(_baseNumber.equals("0") || numToMultiply.equals("0"))
- return "0";
- _baseNumber = new StringBuffer(_baseNumber).reverse().toString();
- numToMultiply = new StringBuffer(numToMultiply).reverse().toString();
- int[] partialResults = new int[_baseNumber.length() + numToMultiply.length()];
- for (int i = 0; i < _baseNumber.length(); i++)
- {
- for (int j = 0; j < numToMultiply.length(); j++)
- partialResults[i + j] = partialResults[i + j] + (_baseNumber.charAt(i) - '0') * (numToMultiply.charAt(j) - '0');
- }
- StringBuilder finalResult = new StringBuilder();
- for (int i = 0; i < partialResults.length; i++)
- {
- int digit = partialResults[i] % 10;
- int overflow = partialResults[i] / 10;
- if(i < partialResults.length -1)
- {
- partialResults[i + 1] = partialResults[i + 1] + overflow;
- }
- finalResult.insert(0, digit);
- }
- if(finalResult.charAt(0) == '0')
- finalResult = new StringBuilder(finalResult.substring(1));
- return finalResult.toString();
- }
- public int Factorial(int n){
- if (n < 0)
- throw new IllegalArgumentException("n must be larger or equal to 0");
- int result = 1;
- for (int i = 1; i <= n ; i++)
- result *= i;
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement