A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黎健东 中级黑马   /  2012-8-16 22:31  /  1467 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黎健东 于 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
....诸如此类

3 个回复

正序浏览
张忠豹 发表于 2012-8-16 22:57
import java.math.BigDecimal;
import java.util.Scanner;
class Paixu {

楼上的代码有些小问题哈,不过也完成一般需求
回复 使用道具 举报
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-16 22:54 编辑

这貌似不是提问吧,感觉楼主乐在其中给大家出题啊,莫非也想当滔哥过一次出题的瘾?{:soso_e122:}
BigDecimal!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马