zoukankan      html  css  js  c++  java
  • 栈实现两个大数相加

    import java.util.Scanner;
    import java.util.Stack;
    
    public class JavaDemo {
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            /**
             * 第一个大数入栈
             */
            System.out.println("输入第一个大数:");
            String firstNum = scanner.nextLine();
            Integer integer = Integer.valueOf(firstNum);
            Stack firstStack = new Stack<Integer>();
            for (int n = 0; n < firstNum.length(); n++) {
                firstStack.push(integer % 10);// 从个位开始压入栈
                integer = integer / 10;
            }
            /**
             * 第二个大数入栈
             */
            System.out.println("输入第二个大数:");
            String secondNum = scanner.nextLine();
            Integer integer2 = Integer.valueOf(secondNum);
            Stack secondStack = new Stack<Integer>();
            for (int n = 0; n < secondNum.length(); n++) {
                secondStack.push(integer2 % 10);// 从个位开始压入栈
                integer2 = integer2 / 10;
            }
            /**
             * 两个大数开始做加法运算
             */
            int in = 0;// 每个位置上数字运算后进位
            int middle = 0;// 每个位置上相加所得结果
            Stack thirdStack = new Stack<Integer>();// 存取结果的栈
            while (!firstStack.isEmpty() || !secondStack.isEmpty()) {
                middle = (int) firstStack.pop() + (int) secondStack.pop() + in;
                thirdStack.push(middle % 10);
                in = middle / 10;
                middle = middle / 10;
            }
            while (!thirdStack.isEmpty()) {
                System.out.print(thirdStack.pop());
            }
        }
    }
  • 相关阅读:
    SSM中(Spring-SpringMVC-Mybatis)(一:概念)
    java中的==和equals()
    JAVA之二叉查找树
    Java中堆与栈
    java的运行机制(基础)
    覆盖(重写),重构,重载的区别
    JAVA多线程基础
    java中的类修饰符、成员变量修饰符、方法修饰符
    JAVA中的流程控制语句
    JAVA中的构造函数
  • 原文地址:https://www.cnblogs.com/baorantHome/p/6942272.html
Copyright © 2011-2022 走看看