另类简易计算器

编写一个程序,实现如下功能:
输入一串字符串,字符串由很多数字(包括浮点数)以及加号组成,计算字符串中的数字的总和,并保留2位有效数字
要求:
实现一次运行,可计算多个运算式子,输入 q 时 运行结束
eg:
输入:12.23+23.22+10.5
输出:45.95

1、构建保留小数位数的一个函数:

    /**
     * 按指定舍入模式保留指定小数位数
     * @param d 格式化前的小数
     * @param newScale 保留小数位数
     * @param roundingMode 舍入模式
     *        (RoundingMode.UP始终进一/DOWN直接舍弃/
     *         CEILING正进负舍/FLOOR正舍负进/
     *         HALF_UP四舍五入/HALF_DOWN五舍六进/
     *         HALF_EVEN银行家舍入法/UNNECESSARY抛出异常)
     * @return 格式化后的小数
     */
    public static double formatDecimal(double d, int newScale, RoundingMode roundingMode) {
        BigDecimal bd = new BigDecimal(d).setScale(newScale, roundingMode);
        return bd.doubleValue();
    }

2、功能实现:

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Scanner;

public class Account {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner get=new Scanner(System.in);
		while(true) {
			String sc=get.next();
			if(sc.equals("q")) {
				break;
			}
			account(sc);
		}	
		get.close();
	}
	
	public static void account(String str) {//逻辑实现
		double sum=0;
		String s="";
		int index1=0, index2=0;
		for(int i=0;i<str.length();i++) {
			if(str.charAt(i)=='+') {
				index2=i;
				s=str.substring(index1, index2);//截取从index1到index2位置的字符串
				sum+=Double.valueOf(s);
				index1=index2;
			}
		}
		sum+=Double.valueOf(str.substring(index1, str.length()));
		sum=format_decimal(sum);
		System.out.println("总和为: "+sum);
		
	}
	
	public static double format_decimal(double d) {//保留小数位数
		BigDecimal bd=new BigDecimal(d).setScale(2, RoundingMode.DOWN);
		return bd.doubleValue();
	}
}

3、验证输出:
在这里插入图片描述

发布了75 篇原创文章 · 获赞 52 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/WU2629409421perfect/article/details/97777267