求解java输入输出流的一道题

tuweihao 2010-08-11 01:23:53
编写一个一位数算术表达式计算器,要求用户从命令提示符下输入表达式,如5*4,程序返回结果5*4 = 20。循环提示,直至用户输入“$”符号终止程序。【提示:程序解析表达式,得出操作数和操作符,进行运算后返回结果。】要求程序交互提示如下:
程序提示:请输入一位数表达式…
用户输入:3+2
程序返回:3+2 = 5
程序提示:请输入一位数表达式…
用户输入:$
程序退出:退出系统

求高手帮解!!本人不知道如何将用户输入的数字和运算符号分别获取并进行运算~
...全文
259 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
茫茫大海 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tuweihao 的回复:]

感谢这位大哥的解答~
[/Quote]
嘿嘿,互相学习呗!
茫茫大海 2010-08-12
  • 打赏
  • 举报
回复
这就是Java中的正则表达式,\D表示非数字字符,上面的代码String[] temp = str.split("\\D");的意思是安操作符分割输入的表达式,\d是数字字符,String operator = str.replaceAll("\\d", "");这句的意思是把里面的数字字符全部替换为"",然后就得到操作符了!
WU-ZhiLe 2010-08-12
  • 打赏
  • 举报
回复
String[] temp = str.split("\\D");

String operator = str.replaceAll("\\d", "");
小弟不是很明白这是什么意思? 请指教?
jason69181 2010-08-12
  • 打赏
  • 举报
回复
建议自己多写代码..
tuweihao 2010-08-11
  • 打赏
  • 举报
回复
感谢这位大哥的解答~
茫茫大海 2010-08-11
  • 打赏
  • 举报
回复

import java.util.Scanner;


public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean flag = true;
String str = null;
int num1, num2;
long sum;
while(flag) {
System.out.println("请输入一位数表达式...");
str = input.nextLine();
//如果输入是$,则退出循环
if(str.trim().equals("$")) {
flag = false;
return;
}
//分割出两个操作数,可以是多位,但是必须符合1*3这种形式
String[] temp = str.split("\\D");
//得到操作符
String operator = str.replaceAll("\\d", "");

//如果操作数少于两个,就提示错误,并返回
if(temp.length != 2) {
System.out.println("请输入符合要求的表达式!");
return;
}

//执行运算,得打结果
num1 = Integer.parseInt(temp[0]);
num2 = Integer.parseInt(temp[1]);
if(operator.equals("+")) {
sum = num1 + num2;
} else if(operator.equals("-")) {
sum = num1 - num2;
} else if(operator.equals("*")) {
sum = num1 * num2;
} else if(operator.equals("/")) {
if(num2 == 0) {
System.out.println("除数不能为0");
return;
}
sum = num1 / num2;
} else if(operator.equals("%")) {
if(num2 == 0) {
System.out.println("模数不能为0");
return;
}
sum = num1 % num2;
} else {
System.out.println("你输入的操作符有误,请重新输入表达式!");
return;
}
System.out.println(str + "=" + sum);
}
}
}


这个程序估计能够满足楼主的需求,好运!

62,612

社区成员

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

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