package Calculator;
public class Solve {
String[] numArrage(String[] numbers, String operator, int indexIndentify, int i){
for (int change = i + 1; change < indexIndentify; change++) {
numbers[change] = numbers[change+1];
}
numbers[indexIndentify] = null;
return numbers;
}
String MDAS(String input){
Operator Operator = new Operator();
String expression = input;
String[] numbers = expression.split("[+\\-x÷%]");
//Scan Operator
String operator = "";
for (int i = 0; i<expression.length(); i++) {
if ( expression.charAt(i) == '+' ||
expression.charAt(i) == '-' ||
expression.charAt(i) == 'x' ||
expression.charAt(i) == '%' ||
expression.charAt(i) == '÷') {
operator += expression.charAt(i);
}
}
int indexIndentify = numbers.length-1;
for (int i = 0; i<operator.length(); i++) {
if (operator.charAt(i) == 'x' || operator.charAt(i) == '÷' || operator.charAt(i) == '%') {
//Multiply
if (operator.charAt(i) == 'x') {
numbers[i] = Operator.multiply(numbers[i], numbers[i+1]);
operator = operator.substring(0, i) + operator.substring(i + 1);
numbers = numArrage(numbers, operator, indexIndentify, i);
indexIndentify--;
i--;
//Debug
//JOptionPane.showMessageDialog(null, "Operator: "+operator+"\n Numbers: "+Arrays.toString(numbers));
continue;
}
if (operator.charAt(i) == '÷') {
numbers[i] = Operator.divide(numbers[i], numbers[i+1]);
operator = operator.substring(0, i) + operator.substring(i + 1);
numbers = numArrage(numbers, operator, indexIndentify, i);
indexIndentify--;
i--;
//Debug
//JOptionPane.showMessageDialog(null, "Operator: "+operator+"\n Numbers: "+Arrays.toString(numbers));
continue;
}
if (operator.charAt(i) == '%') {
numbers[i] = Operator.modulo(numbers[i], numbers[i+1]);
operator = operator.substring(0, i) + operator.substring(i + 1);
numbers = numArrage(numbers, operator, indexIndentify, i);
indexIndentify--;
i--;
//Debug
//JOptionPane.showMessageDialog(null, "Operator: "+operator+"\n Numbers: "+Arrays.toString(numbers));
continue;
}
}
}
for (int i = 0; i<operator.length(); i++) {
if (operator.charAt(i) == '+' || operator.charAt(i) == '-') {
//Multiply
if (operator.charAt(i) == '+') {
numbers[i] = Operator.add(numbers[i], numbers[i+1]);
operator = operator.substring(0, i) + operator.substring(i + 1);
numbers = numArrage(numbers, operator, indexIndentify, i);
indexIndentify--;
i--;
//Debug
//JOptionPane.showMessageDialog(null, "Operator: "+operator+"\n Numbers: "+Arrays.toString(numbers));
continue;
}
if (operator.charAt(i) == '-') {
numbers[i] = Operator.subtract(numbers[i], numbers[i+1]);
operator = operator.substring(0, i) + operator.substring(i + 1);
numbers = numArrage(numbers, operator, indexIndentify, i);
indexIndentify--;
i--;
//Debug
//JOptionPane.showMessageDialog(null, "Operator: "+operator+"\n Numbers: "+Arrays.toString(numbers));
continue;
}
}
}
return numbers[0];
}
String PEMDAS(String input){
return "Parenthesis Not Yet Supported";
}
}