java - 想编程计算器,想把String变成真正的算子
问题描述
我想编写一个简单的计算器并且已经得到了一些代码。但是现在我想将我得到的字符串更改为运算符。例如:
我的输入是:“1,5 - 1,1 + 3,2 =" 现在我有一个双精度数组和一个字符串数组。所以在那之后我想把它放在一起,所以它计算了这个完整的任务。
double result = double[0] String[0] double[1] ....
我希望你能在那里提供帮助,我为我的语法等道歉,英语不是我的主要语言。
import java.util.*;
public class calculator
{
public static void main(String[] args)
{
int a = 0;
int b = 0;
double[] zahl;
zahl = new double[10];
double ergebnis;
String[] zeichen;
zeichen = new String[10];
Scanner input = new Scanner (System.in);
while (input.hasNext())
{
if (input.hasNextDouble())
{
zahl[a] = input.nextDouble();
a++;
}
else if (input.hasNext())
{
zeichen[b] = input.next();
if (zeichen.equals ("=")) break;
b++;
}
}
input.close();
}
}
如果我输入:“1,5 + 2,3 * 4,2 =" 我想得到行前点且不带 .math 的结果
解决方案
您要做的是解析单个字符串并将其转换为数学表达式,然后您想要解析并输出结果。为此,您需要定义一种“语言”并有效地编写解释器。这不是微不足道的,特别是如果你想用括号等来扩展你的语法。
您必须回答的主要问题是,您是想使用解决方案(因为您不是第一个尝试这样做的人),还是您想自己实际编写。有一些“简单”的解决方案,例如,您可以在 Java 中实例化一个 javascript 引擎并输入您的字符串,但这将允许更多,甚至可能是您不想要的东西。或者您可以使用已经执行此操作的库。这个线程已经用多个有趣的答案回答了一个类似的问题: 如何评估以字符串形式给出的数学表达式?
否则,您可能会因为工作量大而感到惊讶,因为您正在投入其中。:)
推荐阅读
- c++ - 在 Visual Studio 中运行代码时出现数百个构建错误
- azure - 在 Service Fabric Mesh 中公开多个服务
- ruby-on-rails - 在将 Rails 从 4.1 更新到 5.2 并添加响应者 gem 后,为我的控制器获取“未定义的方法 `flash`”
- reactjs - 使用异步 componentDidMount 测试 React Router 重定向
- vue.js - Flask,Axios POST 返回网络错误
- kiwi-tcms - 来自 db 的 Kiwi TCMS 超级用户权限
- python - 如何从 Tweepy 获取推文的全文
- javascript - ES6 数组解构并分配给没有函数的对象
- c# - 根据用户日期生成 + 分组新发票行
- java - 连接到 doPost 或 doGet Java 中的 SQL