BigDecimal再次應用——大整數相加

7-3 jmu-Java-02基本語法-07-大整數相加 (4 分)

有若干大整數,需要對其進行求和操作。

輸入格式

每行輸入一個字符串代表一個大整數,連續輸入若干行,當某行字符爲eE時退出。

輸入樣例:


輸出樣例:


分析:這裏就又用到了BigDecimal類,BigDecimal類之前已經做過了一些介紹,這裏就不再贅述。這個題目是大數相加,也就是說,當我們需要計算一個非常大的數字時,如果這個數字已經超越了最長的浮點型,此時我們應該怎麼辦,在競賽題中我曾經使用字符串掃描的方法,通過模擬真實的計算過程來解決這個問題,而這個方法在java中就被集成到了一個類中,即BigDecimal類裏,這個類的add方法就可以通過字符串處理方法,來計算這個大數或者一個定點小數。

import java.util.*;
import java.math.*;//必須導入math庫


class Main {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		
		String ss,aa;
		ss = s.nextLine();
		//if(ss.indexOf("e")>=0||ss.indexOf("E")>=0)
			//return;
		BigDecimal s1 = new BigDecimal(ss);//將已經輸入好的ss字符串轉變成BigDecimal類型
		//BigDecimal a1;
		while(true)//按題目要求進行循環
		{
			aa = s.nextLine();
			if(aa.indexOf("e")>=0||aa.indexOf("E")>=0)//判斷是否有e存在,如果存在則終止
				break;
			else{
			BigDecimal a1 = new BigDecimal(aa);
			s1 = s1.add(a1);
			}
		}
		System.out.print(s1);
		
	}
}

總結:這個題的題目要求有些難懂,說實話題出的不是特別好,主要是側重使用BigDecimal方法,而這裏的具體題目要求是先輸入一個大數,然後再輸入第二個,第三個...,這些數要循環相加,而不是兩個一組的相加,同時第一個必須輸入,直接輸入終止符‘e’也不會停止,這裏是題目本身的問題,這裏不再深究。這裏在進行判別終止符時用到了一個方法是indexOf方法,這是String類的一個方法,用於查找指定字符的位置,如果找到,則返回它的位置,如果找不到,則返回-1,所以這裏使用"if(aa.indexOf("e")>=0"的語句方式來判斷是否串中存在它。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章