Expresión aritmética que solo tiene operadores + y * en Java

Aquí, discutiremos la expresión aritmética que tiene operadores como la suma y la multiplicación y verá cómo puede tomar una expresión y calcular el valor con la ayuda del programa. 

Dada una expresión que solo tiene operadores + y *, la tarea es evaluar la expresión de string y encontrar su salida. En esto, es un programa Java simple para implementar en cuya expresión contiene solo operadores de suma (+) y multiplicación (*).

Ejemplo 1:

Input: 1+2*3+4*5*6
Output: 127
Explanation: According to BODMAS, multiplication is evaluated 
             first giving an expression as: 1+6+120. 
Finally the sum is 127.

Ejemplo 2:

Input: 2*3*4
Output: 24

Ejemplo 3:

Así es como el programa Java dado a continuación tomará la string como entrada y la dividirá en función de operadores como la suma (+) y la multiplicación (*). 

1+2*3+4*5*6
|1|+|2*3|+|4*5|*6|
|1|+|6|+|20|*6
|1|+|6|+|120| = 127  

Acercarse :

  1. Divida la string con la coincidencia de expresiones regulares + signo
  2. Por lo tanto, cada elemento en la array de strings resultante tiene un solo número o una expresión de productos.
  3. Ahora recorra la array para encontrar índices que tengan productos.
  4. Dividir la expresión del producto con la coincidencia de expresiones regulares * signo
  5. Ahora multiplique cada número que se dividió usando el signo * en el Paso 4.
  6. Finalmente, cada índice tiene solo números que deben agregarse para la evaluación final de una expresión.
  7. Sume enteros en todos los índices de la array recibida después del Paso 1.
  8. La suma da el resultado final de la string de expresión.

A continuación se muestra la implementación del enfoque anterior:

Java

import java.io.*;
  
class GFG {
  
    static int calculator(String str)
    {
        // Split expression string using + operator.
        // Now every index will have either an integer or an
        // expression of only products.
        String[] arr = str.split("\\+");
  
        for (int i = 0; i < arr.length; i++) {
            int result = 1;
  
            // If index contains * sign,
            // split expression using *
            if (arr[i].contains("*")) {
                String[] num = arr[i].split("\\*");
  
                // Multiply each number separated by * and
                // store final product in 'result' variable
                for (int j = 0; j < num.length; j++) {
                    result *= Integer.parseInt(num[j]);
                }
  
                // Store resultant product value in the
                // array index. For ex: index having 2*3 is
                // replaced by 6 and index having 4*5*6 is
                // replaced by 120.
                arr[i] = String.valueOf(result);
            }
        }
  
        // Now every array index has a
        // single integer as element.
        int len = arr.length;
        int sum = 0;
  
        // Calculate the sum of all elements
        // of array to get final result.
        for (int i = 0; i < len; i++) {
            sum += Integer.parseInt(arr[i]);
        }
  
        // Return the final result
        return sum;
    }
  
    public static void main(String[] args)
    {
        // Expression string is: 1+2*3+4*5*6
        System.out.println(calculator("1+2*3+4*5*6"));
    }
}

Producción :

127

Publicación traducida automáticamente

Artículo escrito por SAKSHIKULSHRESHTHA y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *