gpt4 book ai didi

java - 在基于命令行的计算器程序中处理输入的最佳做法是什么?

转载 作者:行者123 更新时间:2023-11-29 05:54:23 26 4
gpt4 key购买 nike

哟 - 试图回到 java,所以决定创建一个计算器。

假设它是这样工作的:

1) 以字符串的形式获取用户的输入-> 此输入存储为字符串,例如:12+89

2) 根据操作符位置拆分字符串,并确保在此操作之前的任何内容都转换为整数并存储

3) 一旦字符串通过,计算值

我很确定我把它弄得比实际情况更复杂 :p 这是目前为止的代码:

// Split String, count digits in string
public static void spitStrg() {
int numDigits = 0;
int numOperators = 0;
for (int i = 0; i < input.length(); i++) {
if (Character.isDigit(input.charAt(i))) {
numDigits++;
}
else if (input.charAt(i) == '+') {
System.out.println( "Position of operator: "+i);
numOperators++;
}
}
System.out.println("Number of Digits: "+numDigits);
System.out.println("Number of Operators: "+numOperators);
}

// Create a number from cut off point
public static void createNum(int startPoint, int operatorPosition) {
String tempNum = "";

for (int j = startPoint; j < operatorPosition; j++) {
tempNum = tempNum + input.charAt(startPoint);
}
}

有没有人对如何处理此问题有任何其他建议? IE。一次请求一个数字,然后是运算符或将所有内容存储在一个 vector 中以反射(reflect)越来越多的数字和运算符?

最佳答案

不确定这是否适合您。 (或者作弊?)

您只需让用户将整个表达式作为字符串输入。 23+33-34*2^2

然后你可以:

try {
final ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
final Object result = engine.eval("23+33-34*2^2");
System.out.println(result);
} catch (final ScriptException e) {

e.printStackTrace();
}

运行上面的代码,会给你:

-10

关于java - 在基于命令行的计算器程序中处理输入的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12729602/

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