大家好,如果您还对java时间加减不太了解,没有关系,今天就由本站为大家分享java时间加减的知识,包括日期时间计算加减JAVA的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
本文目录
一、如何利用Java中的BigDecimal实现加减乘除功能
*由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
*确的浮点数运算,包括加减乘除和四舍五入。
publicclassArith{//默认除法运算精度
privatestaticfinalintDEF_DIV_SCALE=10;//这个类不能实例化
publicstaticdoubleadd(doublev1,doublev2){
BigDecimalb1=newBigDecimal(Double.toString(v1));
BigDecimalb2=newBigDecimal(Double.toString(v2));
returnb1.add(b2).doubleValue();
publicstaticdoublesub(doublev1,doublev2){
BigDecimalb1=newBigDecimal(Double.toString(v1));
BigDecimalb2=newBigDecimal(Double.toString(v2));
returnb1.subtract(b2).doubleValue();
publicstaticdoublemul(doublev1,doublev2){
BigDecimalb1=newBigDecimal(Double.toString(v1));
BigDecimalb2=newBigDecimal(Double.toString(v2));
returnb1.multiply(b2).doubleValue();
*提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
*小数点以后10位,以后的数字四舍五入。
publicstaticdoublediv(doublev1,doublev2){
returndiv(v1,v2,DEF_DIV_SCALE);
*提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
*@paramscale表示表示需要精确到小数点以后几位。
publicstaticdoublediv(doublev1,doublev2,intscale){
thrownewIllegalArgumentException(
"Thescalemustbeapositiveintegerorzero");
BigDecimalb1=newBigDecimal(Double.toString(v1));
BigDecimalb2=newBigDecimal(Double.toString(v2));
returnb1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
*提供精确的小数位四舍五入处理。
publicstaticdoubleround(doublev,intscale){
thrownewIllegalArgumentException("Thescalemustbeapositiveintegerorzero");
BigDecimalb=newBigDecimal(Double.toString(v));
BigDecimalone=newBigDecimal("1");
returnb.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
二、急求java编“加减乘除”功能的程序
private double precision= 0.0001;//精准度
public static void main(String args []){
Calculator clerk=new Calculator();
System.out.println("请按格式输入符号空格数字");
System.out.println("例如:+ 3");
System.out.println("如果想结束输入e");
System.out.println("清零请按c");
clerk.handleArithmeticException(e);//抓住后调用 ***
catch(UnknownOpException e){//catch自定义异常
clerk.handleUnknownOpException(e);
System.out.println("最终的结果是"+clerk.getValue());
System.out.println("计算器计算结束");
public void setResult(double newResult){//setResult没用到
public void doCalculation() throws ArithmeticException,UnknownOpException
Scanner keyboard= new Scanner(System.in);
System.out.println("结果="+result);
nextOp=(keyboard.next()).charAt(0);//按位置返回字符
if((nextOp=='e')||(nextOp=='E'))
else if((nextOp=='c')||(nextOp=='c')){//按位置返回字符
System.out.println("结果已清0");
nextNumber=keyboard.nextDouble();
result=evaluate(nextOp,result,nextNumber);
System.out.println("结果"+ nextOp+""+nextNumber+"="+result);
System.out.println("最终的结果="+ result);
public double evaluate(char op,double n1,double n2) throws ArithmeticException,UnknownOpException
if((-precision<n2)&&(n2<precision))
throw new ArithmeticException(); answer=n1/n2;
throw new UnknownOpException("符号错误!!!");
public void handleArithmeticException(ArithmeticException e){//catch的调用 ***
System.out.println("出错了!!!被除数是0");
System.out.println("程序结束");
public void handleUnknownOpException(UnknownOpException e){
//System.out.println(e.getMessage());
System.out.println("清从新输入:");
System.out.println("请按格式输入符号空格数字");
System.out.println("例如:+ 3");
System.out.println("如果想结束输入e");
// System.out.println(e2.getMessage());
System.out.println("符号未知");
System.out.println("程序结束");
catch(ArithmeticException e3){
handleArithmeticException(e3);
class UnknownOpException extends Exception{//自定义无符号异常
public UnknownOpException(String o){
System.out.println(o+"没有这个符号");
你看看行不?程序设计的不是很好,但能实现+-*/
另一个小+-*/的程序,你自己再改改
public static void main(String[] args){//在编译时自带参数。类型强制转换
if(args.length<3){//命令行参数个数小于3
"Usage: java Test\"n1\"\"op\"\"n2\"");
System.exit(-1);//系统退出,-1表示非正常退出。0表示正常退出。
double d1= Double.parseDouble(args[0]);
double d2= Double.parseDouble(args[2]);
if(args[1].equals("+")) d= d1+d2;
else if(args[1].equals("-")) d= d1-d2;
else if(args[1].equals("x")) d= d1*d2;//*在这个程序里的cmd运行下有错误,所以用x
else if(args[1].equals("/")) d= d1/d2;
System.out.println("Error operator!");
三、求简单java写计算器代码加减乘除
应该相同吧,发个我写的,里面的图片没有,运行就不行了,看看重点部分的吧,参考下子
JFrame j1=new JFrame("计算器");
URL url=getClass().getResource("go.gif");
JLabel je=new JLabel(new ImageIcon(getClass().getResource("go1.jpg")));
Container c=j1.getContentPane();
JTextArea tf=new JTextArea(s);
JLabel ja=new JLabel(s2="之一次尝试,OK!");
JButton b1=new JButton(new ImageIcon(getClass().getResource("1.jpg")));
JButton b2=new JButton(new ImageIcon(getClass().getResource("2.jpg")));
JButton b3=new JButton(new ImageIcon(getClass().getResource("3.jpg")));
JButton b4=new JButton(new ImageIcon(getClass().getResource("4.jpg")));
JButton b5=new JButton(new ImageIcon(getClass().getResource("5.jpg")));
JButton b6=new JButton(new ImageIcon(getClass().getResource("6.jpg")));
JButton b7=new JButton(new ImageIcon(getClass().getResource("7.jpg")));
JButton b8=new JButton(new ImageIcon(getClass().getResource("8.jpg")));
JButton b9=new JButton(new ImageIcon(getClass().getResource("9.jpg")));
JButton ba=new JButton(new ImageIcon(getClass().getResource("10.jpg")));
JButton bb=new JButton(new ImageIcon(getClass().getResource("12.jpg")));
JButton bc=new JButton(new ImageIcon(getClass().getResource("13.jpg")));
JButton bd=new JButton(new ImageIcon(getClass().getResource("11.jpg")));
JButton bf=new JButton(new ImageIcon(getClass().getResource("15.jpg")));
JButton bg=new JButton(new ImageIcon(getClass().getResource("16.jpg")));
JButton bh=new JButton(new ImageIcon(getClass().getResource("14.jpg")));
Toolkit kit=Toolkit.getDefaultToolkit();
Image im=kit.createImage(getClass().getResource("图标.gif"));
tf.setBackground(Color.BLACK);
c.setLayout(new BorderLayout());
c.setBackground(Color.WHITE);
j1.setBounds(514,78,545,370);
JLabel l=new JLabel(ic,JLabel.CENTER);
l.setFont(new Font("计算器",Font.BOLD,40));
j1.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
c.setBackground(new Color(226,235,244));
tf.setFont(new Font(s+p+s1,Font.BOLD,23));
tf.setForeground(Color.orange);
ja.setForeground(Color.YELLOW);
ja.setFont(new Font(s2,Font.BOLD,15));
p2.setLayout(new GridLayout(3,1,0,0));
p2.setBackground(Color.BLACK);
p1.setBorder(BorderFactory.createLineBorder(new Color(197,215,235),5));
p2.setBorder(BorderFactory.createLineBorder(Color.YELLOW, 5));
b1.addActionListener(new action1());
b2.addActionListener(new action1());
b3.addActionListener(new action1());
b4.addActionListener(new action1());
b5.addActionListener(new action1());
b6.addActionListener(new action1());
b7.addActionListener(new action1());
b8.addActionListener(new action1());
b9.addActionListener(new action1());
ba.addActionListener(new action1());
bb.addActionListener(new action1());
bc.addActionListener(new action1());
bd.addActionListener(new action1());
bf.addActionListener(new action1());
bg.addActionListener(new action1());
p1.setLayout(new GridLayout(4,4,0,0));
bh.addFocusListener(new FocusListener(){
public void focusLost(FocusEvent d){
ja.setText("请依次输入数值!");
public void focusGained(FocusEvent d){
bh.addActionListener(new action());
class action1 implements ActionListener{
public void actionPerformed(ActionEvent e){
s1=s1+"1";tf.setText(s+p+s1);}
s1=s1+"3";tf.setText(s+p+s1);}}
s1=s1+"5";tf.setText(s+p+s1);}
s1=s1+"6";tf.setText(s+p+s1);}
s1=s1+"7";tf.setText(s+p+s1);}
s1=s1+"8";tf.setText(s+p+s1);}
s1=s1+"9";tf.setText(s+p+s1);}
{ s1=s1+"0";tf.setText(s+p+s1);}
case'+':n=rt+re;s=String.valueOf(n);tf.setText(s+"+");break;
case'-':n=re-rt;s=String.valueOf(n);tf.setText(s+"+");break;
case'*':n=rt*re;s=String.valueOf(n);tf.setText(s+"+");break;
case'/':n=re/rt;s=String.valueOf(n);tf.setText(s+"+");break;
{ s="0";ja.setText("请正确输入之一个数!");}
case'+':n=rt+re;s=String.valueOf(n);tf.setText(s+"-");break;
case'-':n=re-rt;s=String.valueOf(n);tf.setText(s+"-");break;
case'*':n=rt*re;s=String.valueOf(n);tf.setText(s+"-");break;
case'/':n=re/rt;s=String.valueOf(n);tf.setText(s+"-");break;
{s="0";ja.setText("请输入之一个数!");}
case'+':n=rt+re;s=String.valueOf(n);tf.setText(s+"*");break;
case'-':n=re-rt;s=String.valueOf(n);tf.setText(s+"*");break;
case'*':n=rt*re;s=String.valueOf(n);tf.setText(s+"*");break;
case'/':n=re/rt;s=String.valueOf(n);tf.setText(s+"*");break;
ja.setText("请输入之一个数!");
case'+':n=rt+re;s=String.valueOf(n);tf.setText(s+"/");break;
case'-':n=re-rt;s=String.valueOf(n);tf.setText(s+"/");break;
case'*':n=rt*re;s=String.valueOf(n);tf.setText(s+"/");break;
case'/':n=re/rt;s=String.valueOf(n);tf.setText(s+"/");break;
ja.setText("请正确输入之一个数!");}
class action implements ActionListener{
public void actionPerformed(ActionEvent e){
ja.setText("请重新输入之一个数!");}
case'+':n=rt+re; tf.setText(s+p+s1+"="+n);break;
case'-':n=re-rt; tf.setText(s+p+s1+"="+n);break;
case'*':n=rt*re; tf.setText(s+p+s1+"="+n);break;
case'/':n=re/rt;if(rt==0){ tf.setText(s+p+s1+"="+"无效结果");}else tf.setText(s+p+s1+"="+n);break;
default:s2="您的输入有误!";}
public static void main(String args[]){
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!