• File: Solve.java
  • Full Path: /home/lmnet/fm-site/files/JavaProgramming/JAVAPROGRAMS/Calculator/Calculator/Solve.java
  • Date Modified: 02/23/2026 3:42 PM
  • File size: 4.61 KB
  • MIME-type: text/plain
  • Charset: utf-8
 
Open Back
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";
    }
}