java生成算数表达式_java – 用于复杂数学表达式的高级标记生成器

使用Java流标记生成器.界面有点奇怪,但人们会习惯它:

http://docs.oracle.com/javase/7/docs/api/java/io/StreamTokenizer.html

解析所请求的String列表的示例代码(您可能希望直接使用tokenizer或至少使用Object列表,这样您可以直接将数字存储为Double):

public static List tokenize(String s) throws IOException {

StreamTokenizer tokenizer = new StreamTokenizer(new StringReader(s));

tokenizer.ordinaryChar('-'); // Don't parse minus as part of numbers.

tokenizer.ordinaryChar('/'); // Don't treat slash as a comment start.

List tokBuf = new ArrayList();

while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {

switch(tokenizer.ttype) {

case StreamTokenizer.TT_NUMBER:

tokBuf.add(String.valueOf(tokenizer.nval));

break;

case StreamTokenizer.TT_WORD:

tokBuf.add(tokenizer.sval);

break;

default: // operator

tokBuf.add(String.valueOf((char) tokenizer.ttype));

}

}

return tokBuf;

}

测试运行:

System.out.println(tokenize("4*x+5.2024*(Log(x,y)^z)-300.12"));

[4.0,*,x,+,5.2024,(,Log,y,),^,z,-,300.12]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值