文档章节

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

© 著作权归作者所有

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

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

彭博
2012/03/09
1K
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
如何使用Ghostscript调试PostScript

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

嘶吼RoarTalk
08/10
0
0
Vector、ArrayList、LinkList集合框架的使用与理解

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

<E>, <E>, <E>
09/25
0
0
C++实现堆栈

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

Ritajiao
2016/04/06
11
0

没有更多内容

加载失败,请刷新页面

加载更多

19《Java核心技术》之什么情况下Java程序会产生死锁?如何定位、修复?

一、提出问题 今天,我们会讨论一些日常开发中类似线程死锁等问题的排查经验,并选择一两修复过或者诊断过的核心类库死锁问题作为例子,希望不仅能在面试时,包括在日常工作中也能对你有所帮...

飞鱼说编程
35分钟前
1
0
golang安装gRpc

安装官方安装命令: go get google.golang.org/grpc 是安装不起的,会报: package google.golang.org/grpc: unrecognized import path "google.golang.org/grpc"(https fetch: Get https:/......

xtof
36分钟前
1
0
linux-centos7 基于等保3的系统安全体系

sshd配置 配置文件:/etc/ssh/sshd_config Note: 更改ssh相关配置后需要重启sshd服务 systemctl restart sshd 参考文档:https://man.openbsd.org/ssh.1 ssh访问控制 AllowUsers <userlist......

阿dai
36分钟前
4
0
Linux学习-1031(rsync同步工具 上)

10.28 rsync工具介绍 10.29/10.30 rsync常用选项 10.31 rsync通过ssh同步 一、 rsync工具介绍 rsync是一个同步工具,在日常的运维中常会用到。它可以本地同步,也实现可以远程两台机器同步。...

wxy丶
49分钟前
1
0
python实战一期:第一天

1. 为什么学习python 1.1 为什么要学Python? Python第一是个非常牛B的脚本语言,能满足绝大部分自动化运维的需求,又能做后端C/S架构,又能用WEB框架快速开发出高大上的Web界面,只有当你自...

laoba
51分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部