`

自己写的大整数的加减乘除法JAVA实现--待完成

阅读更多
package chow.test;

/**
 * @author Chow
 * @date Jun 7, 2010
 * @Description 大整数的加法,减法,乘法,除法
 */

public class BigNumOperation {
	private static String result;
	
	//加法,从低位加起,逢十进一
	public static String add(String firstNum, String secondNum){
		result = "";
		int maxLength = firstNum.length() >= secondNum.length() ? firstNum.length() : secondNum.length();
		int index = maxLength - 1;
		int carry = 0;
		
		while(firstNum.length() < maxLength){
			firstNum = "0" + firstNum;
		}
		
		while(secondNum.length() < maxLength){
			secondNum = "0" + secondNum;
		}
		
		while(index >= 0){
			int firstInt = Integer.valueOf(firstNum.substring(index, index + 1));
			int secondInt = Integer.valueOf(secondNum.substring(index, index + 1));
			result += (firstInt + secondInt + carry) % 10;
			carry = (firstInt + secondInt + carry) / 10;
			index--;
		}
		
		if(carry != 0){
			result += carry;
		}
		
		return revert(result);
	}
	
	//减法,分三种情况:1.两者相等,返回0,2:大数减小数,小数补0,逐位减,借位;3:小数减大数,转化为2,加-号
	public static String minus(String firstNum, String secondNum){
		result = "";
		String sign = "";
		if(firstNum.equals(secondNum)){
			return "0";
		}
		//小数-大数,交换firstNum与secondNum,并符号置为-
		if(firstNum.length() < secondNum.length() 
				|| (firstNum.length() == secondNum.length() && firstNum.compareTo(secondNum) < 0)){
			sign = "-";
			String tmp = firstNum;
			firstNum = secondNum;
			secondNum = tmp;
		}
		//若小数(secondNum)不足位,高位补0
		while(secondNum.length() < firstNum.length()){
			secondNum = "0" + secondNum;
		}
		//大数从低位开始,逐位减小数
		int index = firstNum.length() - 1;
		int borrow = 0;	//记录借位
		while(index >= 0){
			int left = firstNum.charAt(index) - secondNum.charAt(index) + borrow;
			if(left < 0){
				borrow = -1;
				left += 10;
			}
			result = left + result;
			index--;
		}
		//去除多余的前导0
		while(result.indexOf("0") == 0){
			result = result.substring(1);
		}
		return sign + result;
	}
	
	//反转字符串
	public static String revert(String string){
		char[] charArray = new char[string.length()];
		for(int i = 0; i < string.length(); i++){
			charArray[i] = string.charAt(string.length() - 1 - i);
		}
		return new String(charArray);
	}
	
	public static void main(String[] args){
		System.out.println(BigNumOperation.add("4561427489456123", "798754564567343"));
		System.out.println(BigNumOperation.minus("5345435435", "543543543543"));
	}
}
 
分享到:
评论

相关推荐

    java编写一个类,该类可以进行加、减、乘、除四则运算,并且输出运算结果

    此外,对于除法,如果被除数为0,该类可以报错。对于加、减、乘、除之外的运算符,该类应该告知无法处理。 (2)编写一个包含主方法main的公共类(访问权限为public的类),主方法main中完成的任务是:从键盘上输入...

    Java实战项目:计算器应用程序 - 实现基本的数学运算功能

    当创建一个计算器应用程序时,我们需要考虑如何实现基本的数学运算功能,包括加法、减法、乘法和除法。在这篇Java实战博客中,我将向您展示如何使用Java编程语言创建一个简单的计算器应用程序。我们将从创建用户界面...

    java四则运算

    一个java类,该类可以进行加、减、乘、除四则运算,并且可以输出运算结果。此外,对于除法,如果被除数为0,该类可以报错。对于加、减、乘、除之外的运算符,该类应该告知无法处理。 编写一个包含主方法main的公共类...

    西南科技大学Java程序设计与实践 实验四 GUI实验实验报告及源码

    3、完成简单的整数加、减、乘、除运算。 四、实验报告内容要求: 1、简要分析Java Application方式建立的应用程序框架的 执行过程; 2、简要分析Windows计算器的布局拆分思路; 3、完整介绍整数加、减、乘、除运算的...

    java数学计算能力训练系统 期末

    中级功能:在完成基本功能基础上,添加50以内的乘法、除法题(整数除法)出题、答题功能。 高级功能:在完成中级功能的基础上,新增记录做题过程、统计正确率及耗时功能,并在中止训练时显示。 (三)设计要求 1、该...

    24点算法Java源码

    所有的中间结果必须是整数,所以一些除法运算是不允许的(例如,(2*2)/4是 合法的,2*(2/4)是不合法的) 下面我们给出一个游戏的具体例子: 若给出的6个操作数是:1,2,3,4,7和25,理想目标数是573; 则...

    安卓计算器程序设计作品.rar

    用Java实现求两整数的加、减、乘、除运算结果,要求两整数的范围都是 [0,100]o从键盘输入数m,数n,判断他们的范围,若不在[0,100]范围内,则 输出提示语,要求重新输入,并且在做除法运算时,当除数为0时,输出提示 ...

    整理后java开发全套达内学习笔记(含练习)

    implements (关键字) 实现 ['implimәnt] import (关键字) 引入(进口,输入) Info n.信息 (information [,infә'meiʃәn] ) Inheritance [java] 继承 [in'heritәns] (遗传,遗产) initialize 预置 初始化 [i'ni...

    java计算器程序.doc

    java 编写计算器的简单程序//一个较为简洁的巧妙的计算器程序, import java.io.*; import java.awt.event.*; import java.awt.*; //需要解决的问题,数学的运算都有正负号的出现,在点击等号的时候就会有冲突,...

    MDEcoursework

    用户可以单独或一起使用关键字加,减,乘,除和幂来获得运算结果。 这些句子可能是诸如add(1,2),subtract(4.4,2)或add(multiply(3,1.2),4.7)之类,甚至更复杂。 对于“加”语法,括号中的两个数字均为加...

    ArithmeticSimulator:测试

    此Java算术运算仿真显示了如何通过硬件接线实现加,减,乘和除运算。 它还显示了不同操作的速度 本质上,整数加法器由单位加法器序列组成。 减法电路是由翻转电路和加法器制成的。 乘法电路是一系列复制,移位电路和...

Global site tag (gtag.js) - Google Analytics