另類簡易計算器

編寫一個程序,實現如下功能:
輸入一串字符串,字符串由很多數字(包括浮點數)以及加號組成,計算字符串中的數字的總和,並保留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、驗證輸出:
在這裏插入圖片描述

發佈了81 篇原創文章 · 獲贊 56 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章