编写程序,计算任何一个四则表达式的值。
(除法取整即可,不必考虑小括号)例如:变量a的值为“23+3*32/2-65”。运行程序后输出此表达式的结果。
要求:综合应用字符串和Vector的相关知识。拆分出字符和數字之后便不會了....
(除法取整即可,不必考虑小括号)例如:变量a的值为“23+3*32/2-65”。运行程序后输出此表达式的结果。
要求:综合应用字符串和Vector的相关知识。拆分出字符和數字之后便不會了....
解决方案 »
- java将txt数据导入到excel的方法*(最好有个实例程序)
- RedhatLinux安装JDK
- 如何在jtable 绑定 JTextfield 实现动态同步更新
- 大伙都使用什么IDE编写JAVA?
- 使用eclipse编写程序,出现无限循环,如何快速跳出循环,结束程序的运行?
- Java有没有类似于大富翁离线论坛那样的东东
- 一个java连接oracle10g的问题,郁闷一下午了,高人指点一下
- 使用setLong(A,987654321)向A字段number(9)插入数据,但总是报插入的值过大的错误,何故?
- 关于tomcat的问题
- 那位大哥告诉我一些能下载java好书的网站!(万分感谢!)
- 小弟有一个问题,写完代码
- @数组倒序排列题。求优化的方法
public static void main(String[] args) {
String s = new String("23+3*32/2-65");
String[] s1 = s.split("\\D");
String[] s2 = s.split("\\d");
如何才能做個循環依次儲存并計算他們?
我迷這里好多天了T T
拜托請解答,謝謝...
http://book.csdn.net/bookfiles/38/1003811992.shtml
上面这个是他的完整的实现和思路;
我也曾经写了一个简单的实现是采用LinkedList实现的 //解析算术式,把分别把数字,运算符放入number,和op中
String s ="........." //要计算的表达式
LinkedList<String> number = new LinkedList<String>();
LinkedList<String> op = new LinkedList<String>();
for (String n : s.split("\W")){
number.add(n);
}
System.out.println("计算之前 number:" + number + " 个数 :"
+ number.size());
for (String o : s.split("\w+")){
op.add(o);
}
op.remove(0); // 第1个元素为"",移除
//System.out.println("计算之前 op :" + op + " 个数:" + op.size());
//先计算*,/运算,并把计算过的数和运算符设置为字符串null,对于数的设置把左操作数
//置字符串null,右操作数置为2数运算的结果
for (int i = 0; i < number.size() - 1; i++){
String p = op.get(i);
if (p.equals("*")) ...{
int n = Integer.parseInt(number.get(i))
* Integer.parseInt(number.get(i + 1));
number.set(i, "null");
number.set(i + 1, n + "");
op.set(i, "null");
} else if (p.equals("/")){
int n = Integer.parseInt(number.get(i))
/ Integer.parseInt(number.get(i + 1));
number.set(i, "null");
number.set(i + 1, n + "");
op.set(i, "null");
}
}
// System.out.println("乘除运算完毕!");
// 将number,op中置null的删除
for (Iterator<String> it = number.iterator(); it.hasNext();){
if (it.next().equals("null")){
it.remove();
}
}// System.out.println("进行乘除计算后剩余的计算数: number:" + number + "个数:"
// + number.size());
for (Iterator<String> it = op.iterator(); it.hasNext();){
if (it.next().equals("null")){
it.remove();
}
}// System.out.println("进行乘除计算后剩余的操作符: op:" + op + " 个数:" + op.size());
//进行+,-运算
boolean flag = true;
while (flag){
//运算过的置null字符串
for (int i = 0; i < number.size() - 1; i++){
String p = op.get(i);
if (p.equals("+")){
int n = Integer.parseInt(number.get(i))
+ Integer.parseInt(number.get(i + 1));
number.set(i, "null");
number.set(i + 1, n + "");
op.set(i, "null");
} else if (p.equals("-")){
int n = Integer.parseInt(number.get(i))
- Integer.parseInt(number.get(i + 1));
number.set(i, "null");
number.set(i + 1, n + "");
op.set(i, "null");
} else ...{
continue;
}
}
//将置null的删除
for (Iterator<String> it = number.iterator(); it.hasNext();){
if (it.next().equals("null")){
it.remove();
}
}
// System.out.println("进行乘除计算后剩余的计算数: number:" + number + "个数:"
// + number.size());
for (Iterator<String> it = op.iterator(); it.hasNext();){
if (it.next().equals("null")){
it.remove();
}
}
// System.out.println("进行乘除计算后剩余的操作符: op:" + op + " 个数:"
// + op.size());
// System.out.println(number);
//判断如果op中没有元素,将算术式也运算完毕
if (op.size() == 0){
flag = false;
break;
}
}
// System.out.println("进行加减计算后剩余的计算数: number:" + number + " 个数:"
// + number.size());
// System.out.println("进行加减计算后剩余的操作符: op:" + op + " 个数:" + op.size());
// System.out.println(number);
String result = number.get(0);
System.out.println("运算结果:" + result);