• File: Solve_260224084638.java
  • Full Path: /home/lmnet/fm-site/files/JavaProgramming/JAVAPROGRAMS/Calculator/Calculator/Solve_260224084638.java
  • Date Modified: 02/24/2026 8:46 AM
  • File size: 5.35 KB
  • MIME-type: text/plain
  • Charset: utf-8
 
Open Back
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";
    }
}