Java中只有+和*运算符的算术表达式
在这里,我们将讨论具有加法和乘法等运算运算符的算术表达式,您将看到如何使用表达式并在程序的帮助下计算值。
给定一个只有 + 和 *运算符的表达式,任务是评估字符串表达式并找到它的输出。在这里,它是一个简单的Java程序来实现其中的表达式只包含加法(+) 和乘法(*)运算符。
示例 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.
示例 2:
Input: 2*3*4
Output: 24
示例 3:
这是下面给定的Java程序如何将字符串作为输入并根据加法(+)和乘法(*)等运算符进行拆分。
1+2*3+4*5*6
|1|+|2*3|+|4*5|*6|
|1|+|6|+|20|*6
|1|+|6|+|120| = 127
方法 :
- 使用正则表达式匹配+符号拆分字符串
- 因此,结果字符串数组中的每个元素都有一个数字或一个乘积表达式。
- 现在遍历数组以查找具有产品的索引。
- 使用正则表达式匹配 * 符号拆分产品表达式
- 现在乘以在步骤 4 中使用 * 符号分割的每个数字。
- 最后,每个索引只有需要为表达式的最终评估添加的数字。
- 在步骤 1 之后收到的数组中的所有索引处添加整数。
- 总和给出表达式字符串的最终结果。
下面是上述方法的实现:
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"));
}
}
输出 :
127