77范文网 - 专业文章范例文档资料分享平台

大数加减运算(4)

来源:网络收集 时间:2019-03-16 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

@Override

publicvoid actionPerformed(ActionEvent e) { result.setText(null); GetResult gr=new GetResult(); }

getInput();//获取输入

longstartTime=System.nanoTime(); //获取大数计算开始时间 resultStr=gr.add(num1, num2);

longendTime=System.nanoTime(); //获取结束时间

System.out.println(\程序运行时间: \+(startTime-endTime)+\); if (!resultStr.isEmpty()) { inta=0; if(resultStr.charAt(0)=='-') a=1; if(!resultStr.equals(\您的输入格式不正确\)){ intn=resultStr.length()-a; result.setText(\和是\+n+\位整数:\\n \); } result.append(resultStr); } else { result.setText(\未知的错误!\); }

});

this.sub.addActionListener(new ActionListener() { @Override publicvoid actionPerformed(ActionEvent e) { result.setText(null); GetResult gr=new GetResult(); getInput();//获取输入 longstartTime=System.nanoTime(); //获取大数计算开始时间 resultStr=gr.sub(num1, num2);

longendTime=System.nanoTime(); //获取结束时间

System.out.println(\程序运行时间: \+(startTime-endTime)+\); if (!resultStr.isEmpty()) { inta=0; if(resultStr.charAt(0)=='-') a=1; if(!resultStr.equals(\您的输入格式不正确\)){ intn=resultStr.length()-a; result.setText(\差是\+n+\位整数:\\n \); } result.append(resultStr); } else {

14

}

}

}

result.setText(\未知的错误!\);

}); }

//获取输入

privatevoid getInput() { this.num1 = firstNum.getText().replaceAll(\, \); this.num2 = nextNum.getText().replaceAll(\, \); }

// 设置界面显示风格为微软窗口风格 privatevoid setWinStyle() { }

try { String lookAndFeel = UIManager.getSystemLookAndFeelClassName(); UIManager.setLookAndFeel(lookAndFeel); SwingUtilities.updateComponentTreeUI(this); } catch (Exception e) { e.printStackTrace(); }

publicstaticvoid main(String[] args) { UI h = new UI(); h.setTitle(\大数运算 -ncu.edu\); }

2.大数运算模块:GetResult类

package ncu;

import java.util.regex.Matcher; import java.util.regex.Pattern; public class GetResult { // 比较数的大小,减法需要用到

//返回1前者较大,返回0两者相等,-1后者较大 private int COMPARE(String number1, String number2) { int j;

15

}

int length1 = number1.length(); int length2 = number2.length(); if (number1.length() == 0) number1 = \

if (number2.length() == 0) number2 = \j = 0;

for (int i = 0; i < length1; ++i) { if (number1.charAt(i) == '0') ++j; else break; }

number1 = number1.substring(j); j = 0;

for (int i = 0; i < length2; ++i) { if (number2.charAt(i) == '0') ++j; else break; }

number2 = number2.substring(j); length1 = number1.length(); length2 = number2.length();

if (length1 > length2) { return 1;

} else if (length1 == length2) { if (number1.compareTo(number2) > 0) { return 1; } else if (number1.compareTo(number2) == 0) { return 0; } else { return -1; } } else { return -1; }

// 无符号大整数加法

16

public String PLUS(String number1, String number2) { int i; int length1 = number1.length(); int length2 = number2.length(); }

StringBuilder result = new StringBuilder();

number1 = new StringBuilder(number1).reverse().toString(); number2 = new StringBuilder(number2).reverse().toString(); for (i = 0; i < length1 && i < length2; i++) { char c = (char) (number1.charAt(i) + number2.charAt(i) - 48); result.append(c); }

while (i < length1) { result.append(number1.charAt(i)); ++i; }

while (i < length2) { result.append(number2.charAt(i)); ++i; }

int carry = 0;

int n = result.length(); for (i = 0; i < n; ++i) { int value = result.charAt(i) - 48 + carry; result.setCharAt(i, (char) (value % 10 + 48)); carry = value / 10; }

if (carry != 0) { result.append((char) (carry + 48)); }

String resultStr = result.reverse().toString(); if (resultStr.length() == 0) return \return resultStr;

17

// 无符号大整数减法

public String MINUS(String number1, String number2) { int i; int length1 = number1.length(); int length2 = number2.length(); StringBuilder result = new StringBuilder();

if (this.COMPARE(number2, number1) > 0) { return \}

number1 = new StringBuilder(number1).reverse().toString(); number2 = new StringBuilder(number2).reverse().toString(); for (i = 0; i < length1 && i < length2; i++) { char c = (char) (number1.charAt(i) - number2.charAt(i) + 48); result.append(c); }

if (i < length1) { for (; i < length1; i++) { result.append(number1.charAt(i)); } }

int carry = 0;

int n = result.length(); for (i = 0; i < n; i++) { int value = result.charAt(i) - 48 + carry; if (value < 0) { value = value + 10; carry = -1; } else { carry = 0; } result.setCharAt(i, (char) (value + 48)); }

for (i = n - 1; i >= 0; i--) { if (result.charAt(i) != '0') break; }

String resultStr = result.reverse().substring(n - i - 1, n); if (resultStr.length() == 0)

18

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库大数加减运算(4)在线全文阅读。

大数加减运算(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/526992.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: