黑马程序员技术交流社区
标题:
如何写一个合格计算器
[打印本页]
作者:
黎健东
时间:
2012-8-16 22:31
标题:
如何写一个合格计算器
本帖最后由 黎健东 于 2012-8-16 22:43 编辑
如果需求是写一个计算器,在定义运算数值的类型的时候,也许会有下面三种写法:
1、int,这个完全是不合格的类型,只能拿来好玩而已,完全不能满足
2、double, 这个稍微满足需求了,但是用过win7计算器的人都知道,1+1是=2的,但是你用double的话,1+1就=2.0了,怎么办呢,这个时候你怎么处理
3、long,你用计算器试试,完全可以2的64次计算,这个时候long越界了
4、....
嘿嘿,提个需求哈:
任意输入两个值,仅做一次加减乘除运算就够了,输出的结果和win7计数器的结果是一样的,不用GUI界面,控制台输出就够了,如何选择数值的类型和控制数值的输出是关键
如果想挑战更高难度的话,看是否能实现999999999999*9999999类似像win7计算器的结果5.99999999999e+16....看看大家怎么写哈
如果能做负数计算更好哈
动手写的,请大家测试几个数据,看输出结构是否OK
比如:
1.0+1
1.1+1.9
2.000+3.1
....诸如此类
作者:
曹恒业
时间:
2012-8-16 22:52
本帖最后由 曹恒业 于 2012-8-16 22:54 编辑
这貌似不是提问吧,感觉楼主乐在其中给大家出题啊,莫非也想当滔哥过一次出题的瘾?{:soso_e122:}
BigDecimal!
作者:
张忠豹
时间:
2012-8-16 22:57
import java.math.BigDecimal;
import java.util.Scanner;
class Paixu {
public static void main(String[] args) {
System.out.println("请输入三个参数,分别用逗号隔开,前两个为数字类型,第三位add、sup、mul中的一种");
Scanner scanner = new Scanner(System.in);
String input1 = scanner.next();
String input2 = scanner.next();
String type = scanner.next();
BigDecimal num1 = new BigDecimal(input1);
BigDecimal num2 = new BigDecimal(input2);
try {
if("add".equals(type)){
System.out.println(num1.add(num2));
}else if("sup".equals(type)){
System.out.println(num1.subtract(num2));
}else if("mul".equals(type)){
System.out.println(num1.multiply(num2));
}else{
System.out.println(num1.divide(num2));
}
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
System.out.println("输入的参数不正确,请重新输入");
}
}
}
作者:
黎健东
时间:
2012-8-17 00:38
张忠豹 发表于 2012-8-16 22:57
import java.math.BigDecimal;
import java.util.Scanner;
class Paixu {
楼上的代码有些小问题哈,不过也完成一般需求
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2