再问:如何实现我的想法:(

白乔
博客专家认证
2004-08-03 06:15:00
只有25分了:(希望大侠帮忙~

要求用户输入字符串1和pattern字符串2
我的程序即输出相应的格式化后的结果3
如:

300
abc{0}
程序输出abc300

如果我希望当用户输入某个整数时我的程序自动输出这个整数/100的结果
如:

300
....//该怎么写呢??
程序输出abc3

我想使用MessageFormat
请问这个pattern该怎么写?

除以100只是个例子,用户也有可能让它除以50
这些逻辑都是运行时的,不是编译时的

以上想法该如何实现?请高手支招~
或者告诉我怎么计算四则远算的表达式也行:(
...全文
161 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Banned 2004-08-12
  • 打赏
  • 举报
回复
从http://umn.dl.sourceforge.net/sourceforge/jeplite/jeplite-0.8.7a-bin.jar
下载jeplite包


import java.text.*;
import org.cheffo.jeplite.*;
...
JEP jep = new JEP();
jep.addStandardConstants();
jep.addStandardFunctions();
MessageFormat mf=new MessageFormat("{0}*{1}-{2}/{3}+sin({4})");
Object[] arg={new Integer(10),new Integer(20),new Integer(8),new Integer(4),"pi/2"};
String expression=mf.format(arg);
jep.parseExpression(expression);
arg=new Object[1];
arg[0]=new Double(jep.getValue());
System.out.println(MessageFormat.format(expression+"={0}",arg));

输出结果:10*20-8/4+sin(pi/2)=199

如果想要更好更完美更自动化的效果就得自己另外写一些代码了,这些代码可以组合利用
上面的代码。
heibai520 2004-08-12
  • 打赏
  • 举报
回复
UP
Banned 2004-08-11
  • 打赏
  • 举报
回复
得写数学表达式的解析函数,如javascript中的eval函数一般

于是问题转化为

1 用MessageFormat来Format {0}/{1}+{2}*{3} 之类的数学表达式
得到诸如之类具体的数学表达式 100/10+234*234

2 eval("100/10+234*234")

3 用MessageFormat来Format eval出来的结果
白乔 2004-08-09
  • 打赏
  • 举报
回复
谢谢 Banned(Evil)
我还是想让用户输入诸如{0}/{1}这样的字符串
然后提供参数300,100
Banned 2004-08-06
  • 打赏
  • 举报
回复
import java.text.*;

abstract class ObjectFormatter
{
ObjectFormatter(){}
protected String format(){return "";}
public String toString()
{
return format();
}
}
class DivideFormatter extends ObjectFormatter
{
private int dividend;
private int divisor=1;
DivideFormatter(int divisor,int dividend)
{
if(divisor!=0)
this.divisor=divisor;
this.dividend=dividend;
}
public void setDivisor(int divisor)
{
if(divisor!=0)
this.divisor=divisor;
}
public void setDividend(int dividend)
{
this.dividend=dividend;
}
protected String format()
{
return Integer.toString(dividend/divisor);
}
}
public final class Main
{
public static void main(String arg[])
{
//下面的100和300可以换成用户输入的数字
Object[] args={new DivideFormatter(100,300)};
System.out.println(MessageFormat.format("leadingString{0}",args));
}
}

输出结果leadingString3

只需要继承ObjectFormatter,覆盖format函数即可
minghuitian 2004-08-05
  • 打赏
  • 举报
回复
gz
白乔 2004-08-05
  • 打赏
  • 举报
回复
yaiba
你说用正则表达式能实现让某个数除以100?
yaiba 2004-08-03
  • 打赏
  • 举报
回复
这里有你需要的东西
好运!~
http://dev.csdn.net/article/30/30807.shtm

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧