gpt4 book ai didi

java - 在 Java 中计算 String 的数值时控制很多 ifs,例如 ("-3.1+0.12*0.0023-34.1/2.1")

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:15:15 24 4
gpt4 key购买 nike

我想解决我的家庭作业,如 "-3.1+0.12*0.0023-34.1/2.1"

我有限制只能使用数组和字符串,不能使用递归函数(作为一年级学生)

我尝试什么?我试图通过逐个字符解析字符串来解决它。

我只对 + 和 - 尝试这种方法:

public static double CalcPlusMinus(String s) {
double A[] = new double[10000];
if ((s.charAt(0) != '+') && (s.charAt(0) != '-'))
s = '+' + s;
int i = 0, j = 0;
while (i < s.length()) {
int flag = 1;
if (s.charAt(i) == '-')
flag = -1;
i++;
double m = 0;
int end = 0;
if ((s.charAt(i) >= '0') && (s.charAt(i) <= '9'))
while ((s.charAt(i) >= '0') && (s.charAt(i) <= '9')) {
m = m * 10 + (s.charAt(i) - '0');
i++;
if (i >= s.length()) {
end = 1;
break;
}
}
if (end == 0)
if (s.charAt(i) == '.') {
i++;
double x = 10;
while ((s.charAt(i) >= '0') && (s.charAt(i) <= '9')) {
m = m + ((s.charAt(i) - '0') / x);
x *= 10;
i++;
if (i >= s.length())
break;
}
}
A[j++] = m * flag;
}
A[A.length - 1] = j;
for (int m = (int) A[A.length - 1] - 1; m > 0; m--) {
A[m - 1] = A[m] + A[m - 1];
}
return A[0];
}

我正在尝试将 * 和/添加到此方法

但我的主要问题是:如何在我的代码中控制大量的 if-then-else?

是否有任何正式的方式来控制代码中的大量ifs?我知道流程图,但流程图也变成了一个非常大的图景!!

最佳答案

您应该有 3 个独立的步骤:

  1. 解析/标记化 - 将“-3.1+0.12*0.0023-34.1/2.1”吐出到:"-""3.1""+""0.12""*""0.0023""-""34.1""/""2.1"
  2. 转换为Reverse Polish notation , 使用数组作为堆栈
  3. 计算表达式的值

关于java - 在 Java 中计算 String 的数值时控制很多 ifs,例如 ("-3.1+0.12*0.0023-34.1/2.1"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47985200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com