文档章节

使用Stack堆栈集合大数据运算

凯哥学堂
 凯哥学堂
发布于 2017/07/14 01:28
字数 404
阅读 24
收藏 0

使用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
	}
}

© 著作权归作者所有

共有 人打赏支持
上一篇: 网络编程
下一篇: 网络集群
凯哥学堂
粉丝 18
博文 316
码字总数 284948
作品 0
东城
程序员
私信 提问
表达式解析引擎的设计

前言 表达式的计算是一个一般性的问题。在报表领域,经常会出现支持计算公式的需求。MS Office Excel中的函数计算就是一个很好的参考例子。 本文提供一个表达式引擎的设计方案,能够满足报表...

彭博
2012/03/09
2K
0
如何使用Ghostscript调试PostScript

        我最近接触了威胁研究领域的一位朋友,他正在研究PostScript中shellcode提取的问题。PostScript是一种由Adobe Systems开发的简单的解释性编程语言,具有强大的图形功能,已集成...

嘶吼RoarTalk
2018/08/10
0
0
寄存器的英文全称

AH&AL=AX(accumulator):累加寄存器 BH&BL=BX(base):基址寄存器 CH&CL=CX(count):计数寄存器 DH&DL=DX(data):数据寄存器 SP(Stack Pointer):堆栈指针寄存器 BP(Base Pointer):基...

伽罗kapple
2016/02/27
11
0
C++实现堆栈

栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。经分析,C++实现堆栈,程序应实现入栈、出栈、判断栈的状态(主要是判断栈是否为空,是否为满...

Ritajiao
2016/04/06
11
0
Vector、ArrayList、LinkList集合框架的使用与理解

说起集合框架也是老生常谈的话题,也是面试过程中面试官高频率问到的基础知识,新人在学习集合框架的时候总是会经常混淆这些概念和各自特性,这里简单对常用的几种集合做个简单总结,如有疏漏...

<E>, <E>, <E>
2018/09/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

eggjs与sequelize简单demo

参考 egg 官方文档 安装 // 依赖npm install --save egg-sequelize mysql2// ts 类型npm install --save @types/sequelize 插件,config/plugin.ts import { EggPlugin } from 'egg';......

Geeyu
48分钟前
1
0
看过上百部片子的这个人教你视频标签算法解析

本文由云+社区发表 随着内容时代的来临,多媒体信息,特别是视频信息的分析和理解需求,如图像分类、图像打标签、视频处理等等,变得越发迫切。目前图像分类已经发展了多年,在一定条件下已经...

腾讯云加社区
今天
3
0
2. 红黑树

定义:红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树(Binary Search Tree)。 要理解红黑树,先要了解什么是二叉查找树。在上一章中,我们学习了什么是二叉树,以及二叉树...

火拳-艾斯
今天
3
0
input的button类型,点击页面跳转

一、input type=button 不做任何操作 例如: <input type="button" class="btn btn-primary" style="width: 30%" value="返回" onclick="window.location.href='/users/list'"></input> onc......

Sunki
今天
1
0
踩坑:js 小数运算出现精度问题

背景 在学习小程序商城源码时发现了这个问题,单价可能出现小数,小数之间运算结果会莫名其妙多出一大串数字,比如下面这样👇。 在此之前我是知道 js 中著名的 0.1 + 0.2 != 0.3 的问题的,...

dkvirus
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部