package Calculator;
import javax.swing.*;
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 = new String[expression.length()];
numbers[0] = "";
if(expression.charAt(0) == '-') {
numbers[0] += expression.charAt(0);
for (int i = 1; i<expression.length(); i++) {
if(!((expression.charAt(i) == '+') ||
(expression.charAt(i) == '-') ||
(expression.charAt(i) == 'x') ||
(expression.charAt(i) == '%') ||
(expression.charAt(i) == '÷')
))
{
numbers[0] += expression.charAt(i);
JOptionPane.showMessageDialog(null, numbers[0]);
}
}
}
//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";
}
}