使用Stack堆棧集合大數據運算
阿新 • • 發佈:2017-07-14
new mva 緩存 nio itl 數值 i++ 堆棧 ring
使用Stack堆棧集合大數據運算
package com.sta.to;
import java.util.Iterator;
import java.util.Stack;
public class DaMax {
public void jiaFa(String value1, String value2) {
/**
* 更多資料歡迎瀏覽凱哥學堂官網:http://kaige123.com
* @author 小沫
*/
// 把字符串用toCharArray拆成字符
char[] c1 = value1.toCharArray();
char[] c2 = value2.toCharArray();
// 申請好2個Stack集合準備把字符放進去
Stack numvalue1 = new Stack();
Stack numvalue2 = new Stack();
// 進棧
for (char c : c1) {
numvalue1.push(c);
}
for (char c : c2) {
numvalue2.push(c);
}
//new好一個緩存池,接收sum
StringBuffer buffer = new StringBuffer();
int jw = 0;//進位
//用常用類Math獲取最長的長度
int count = Math.max(c1.length, c2.length);
//把長的拿來循環
for (int i = 0; i < count; i++) {
//用來存放出棧的值
int num1;
int num2;
//每一次出棧的值轉為int 才能進行運算
try {
num1 = Integer.parseInt(numvalue1.pop().toString());
} catch (Exception e) {
num1 = 0;//如果異常那就拋出0
}
try {
num2 = Integer.parseInt(numvalue2.pop().toString());
} catch (Exception e) {
num2 = 0;
}
//把num1和num2引用的值加上jw交給sum
int sum = num1 + num2 + jw;
if (sum >= 10) {
//sum大於或等於10 那就要先前一位數進1
jw = 1;
buffer.append(sum % 10);//把總和用取摸後的余數放進緩沖池
} else {
jw = 0;//不大於或等於10 jw就為0 直接把總和交給緩沖池
buffer.append(sum);
}
}
if (jw == 1) {
//問jw還等不等於1,還等於說明最前位數需要多個1 如 99+1=100
buffer.append(1);
}
buffer.reverse();// 把數值反過來
System.out.println(buffer);
}
}
測試類:
package com.sta.to;
import java.nio.Buffer;
public class Test {
public static void main(String[] args) {
DaMax ys = new DaMax();
ys.jiaFa("10", "5");//10+5
ys.jiaFa("15", "50");//15+50
ys.jiaFa("999999999999999", "1");//999...+1
ys.jiaFa("99", "1");//99+1
ys.jiaFa("80", "80");//80+80
ys.jiaFa("8", "7");//8+7
}
}
使用Stack堆棧集合大數據運算