5个回答
展开全部
用java写的计算器的程序,主要是通过控制台输入,主要方法是使用scanner类来接收用户从键盘输入的一个算式,通过分解算式,存入两个字符串,判断中间的的符号,进行相应计算,如下代码:
System.out.println("-----------------------------------");
System.out.println("请输入一个算术表达式,如:45*23");
Scanner in = new Scanner(System.in);//接收用户从键盘输入的字符
String str = in.nextLine();
StringBuffer buffer = new StringBuffer();//保存左侧的数字
StringBuffer buffer1 = new StringBuffer();//保存右侧的数字
char t = ' ';//保存运算符
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == '+' || str.charAt(i) == '-'
|| str.charAt(i) == '*' || str.charAt(i) == '/') {
t = str.charAt(i);//识别是什么运算符
for (int j = i + 1; j < str.length(); j++) {
buffer1.append(str.charAt(j));
}
break;
} else {
buffer.append(str.charAt(i));
}
}
String c = buffer.toString();
String d = buffer1.toString();
double a = Double.parseDouble(c);
double b = Double.parseDouble(d);
double sum = 0;
if (t == '+') {
sum = a + b;
}
if (t == '-') {
sum = a - b;
}
if (t == '*') {
sum = a * b;
}
if (t == '/') {
sum = a / b;
}
System.out.println("程序运算...");
System.out.println(c+t+d+"="+sum);
System.out.print("-----------------------------------");
运行结果如下:
展开全部
你不写界面可以直接写个Java main方法解决。输入变量为要计算的表达式如(2+4)/3-6,写一个处理方法接收并运算结果返回,打印结果即可。
处理方法需要用的逆波兰表达式,你可以直接百度java 逆波兰表达式搜索相关代码,网上有的。
其原理就是做加减乘除,但是因为括号的缘故,提高了加减的优先级(先算括号内的部分),这就用到了栈的概念,先进后出(跟洗盘子一样,先洗完的盘子放到最下面,最后才能拿出来用;队列则是先进先出,这个可以比较下)。
我手头有这样的代码,以前写验证公式用到的,用户可以配置不同的字段进行加减乘除,需要程序进行来进行平衡校验,确认结果,正好就用到逆波兰式解决。数字都用BigDecimal,网上资料搜出来的应该是dobule类型,会有误差的,最好自己改一下。
你自己先琢磨吧,回头发你份参考也行。
处理方法需要用的逆波兰表达式,你可以直接百度java 逆波兰表达式搜索相关代码,网上有的。
其原理就是做加减乘除,但是因为括号的缘故,提高了加减的优先级(先算括号内的部分),这就用到了栈的概念,先进后出(跟洗盘子一样,先洗完的盘子放到最下面,最后才能拿出来用;队列则是先进先出,这个可以比较下)。
我手头有这样的代码,以前写验证公式用到的,用户可以配置不同的字段进行加减乘除,需要程序进行来进行平衡校验,确认结果,正好就用到逆波兰式解决。数字都用BigDecimal,网上资料搜出来的应该是dobule类型,会有误差的,最好自己改一下。
你自己先琢磨吧,回头发你份参考也行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先计算器工作的过程是输入第一个操作数、输入操作符号、输入第二个操作数然后就得出结果了。当然这是最简单的流程。所以你要用System.in读取用户的输入,然后解析出输入的2个操作数和一个操作符,最后用switch..case判断是哪种运算,输出结果。流程上就是这样的。如果是要能支持多步运算(带括号的)那就需要对输入表达式的优先级进行判断,这个东西就类似于编译原理了。就是拆括号,这个比较麻烦就不说了 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要实现到什么程序的计算器?要有运算优先,四则混合?三角函数还是别的什么?
更多追问追答
追问
就是普通的加减乘除的
追答
只是别人输 1+1,你得到2(仅一个运算符)
还是别人输 1+2+3+4+5*2,你得到30(无优先级)
再有就是别人输 1+2*3,你得到7(有优先级)
需求不同,完全不同的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要说的话打的太多
这样我有一套简单的C#的客户端计算器 给你代码 能看懂逻辑吧?
这样我有一套简单的C#的客户端计算器 给你代码 能看懂逻辑吧?
追问
我才开始学 你就大概说一下怎么写
追答
不知道你想实现多么复杂的呢?
是实现两个操作数的计算呢还是实现四则运算?
如果两个数的运算就简单了,你先提示输入第一个数字,然后输入操作符,然后输入第二个数字
如果是四则运算,那就要输入一个完整的四则运算表达式,全部接收,想办法拆分字符串去获得数字和操作符然后设计运算逻辑进行计算
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询