我会加分的,提个思路都行,目前做了个乘法和加法,但是现在对除法没有什么思路。以下是我编写的功能:publicclassCalculator{publicstaticStringmulti(Strings1,Strings2){if(s1==nu...

我会加分的,提个思路都行,目前做了个乘法和加法,但是现在对除法没有什么思路。以下是我编写的功能:

public class Calculator {

public static String multi(String s1,String s2){

if(s1 == null || s2 == null){

return "0";

}

char c1[] = s1.toCharArray();

char c2[] = s2.toCharArray();

for(int i=0;i

if(i==0){

if(c1[i] !='-' && c1[i] != '+' && !(c1[i]>='0' && c1[i]<='9')){

throw new RuntimeException("你要计算的数字不合法!");

}

}else{

if(!(c1[i]>='0' && c1[i]<='9')){

throw new RuntimeException("你要计算的数字不合法!");

}

}

}

for(int i=0;i

if(i==0){

if(c2[i] !='-' && c2[i] != '+' && !(c2[i]>='0' && c2[i]<='9')){

throw new RuntimeException("你要计算的数字不合法!");

}

}else{

if(!(c2[i]>='0' && c2[i]<='9')){

throw new RuntimeException("你要计算的数字不合法!");

}

}

}

String sign1 = "";

String sign2 = "";

if(s1.charAt(0)>='0' && s1.charAt(0)<='9'){

sign1="+";

}else{

sign1 = s1.substring(0,1);

s1 = s1.substring(1);

}

if(s2.charAt(0)>='0' && s2.charAt(0)<='9'){

sign2 = "+";

}else{

sign2 = s2.substring(0,1);

s2 = s2.substring(1);

}

StringBuffer buffer = new StringBuffer();

Long[][] number = new Long[s2.length()][s1.length()+s2.length()];

for(int i=0;i

int t = Integer.parseInt(s2.substring(s2.length()-(i+1),s2.length()-i));

int temp = 0;

int count = 0;

for(int j=number[i].length-1;j>=0;j--){

if(count

int cols = Integer.parseInt(s1.substring(s1.length()-(count+1),s1.length()-count));

number[i][j-i] = new Long( ((cols*t)%10)+temp);

temp = cols*t/10;

}else if(temp !=0){

number[i][j-i] = new Long(temp);

temp = 0;

}

count++;

}

}

int temp = 0;

for(int i=(s1.length()+s2.length())-1;i>=0;i--){

int t = 0;

for(int j=0;j

if(number[j][i] != null){

t+=number[j][i];

}

}

buffer.append(""+(t%10+temp));

temp = t/10;

}

buffer = buffer.reverse();

String result = buffer.toString();

while(result.charAt(0) == '0' && result.length() !=1){

result = result.substring(1);

}

if(!sign1.equals(sign2)){

result = "-"+result;

}

return result;

}

public static String add(String s1,String s2){

//因为字数超过限制,所以没有上传

return "还没有实现!";

}

public static void main(String[] args){

System.out.println(Calculator.add("-755334311424342","-9222012"));

BigInteger big1 = new BigInteger("-755334311424342");

BigInteger big2 = new BigInteger("-9222012");

System.out.println(big1.add(big2)); System.out.println(Calculator.multi("-23423403504534534563","23222222222222222222222222222222222"));

}

}

-----------result-------------

-755334320646354

-755334320646354

-543943470131721017861316196131010101010101010101010101019518951801921211121215658986

展开

java string做除法_如果用java来实现传统方式的除法,用String来保存结果,想精确多少位都行,那改怎么做?...相关推荐

  1. 怎么用java做日历_怎么用java做日历?实例讲解

    Java是一种高级语言,可以用到很多领域中,这不,用java还可以做日历,那么怎么用java做日历?今天我们就给大家讲解一下用java做日历的方法,学会大家也可以做一个日历出来! 我们需要用到两个类: ...

  2. java string的作用_浅谈java String不可变的好处

    一.java内部String类的实现: java 8: public final class String implements java.io.Serializable, Comparable, C ...

  3. java 做日历_如何用java做日历

    展开全部 看看下面代码: import java.awt.*; import java.awt.event.*; import java.util.Calendar; import javax.swi ...

  4. java设置pdf加密_如何使用Java对PDF进行加密,密码保护和设置受限权限

    java设置pdf加密 Today we will be looking at the document workhorse that is PDF, and how to programmatica ...

  5. java程序员封闭_变态级JAVA程序员面试32问(转)

    第一,谈谈final, finally, finalize的区别. final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 ...

  6. java 代码 内存泄露_如何用Java编写一段代码引发内存泄露

    Q:刚才我参加了面试,面试官问我如何写出会发生内存泄露的Java代码.这个问题我一点思路都没有,好囧. A1:通过以下步骤可以很容易产生内存泄露(程序代码不能访问到某些对象,但是它们仍然保存在内存中) ...

  7. java不同垃圾回收器_细述 Java垃圾回收机制→Types of Java Garbage Collectors

    本文非原创,翻译自Types of Java Garbage Collectors 在Java中为对象分配和释放内存空间都是由垃圾回收线程自动执行完成的.和C语言不一样的是Java程序员不需要手动写垃 ...

  8. java获取机器号_(转)JAVA获得机器码的实现

    http://yangshangchuan.iteye.com/blog/2012401 首先,定义了一个统一的接口,以支持不同操作系统不同实现的透明切换: Java代码  收藏代码 /** *生成机 ...

  9. java整数的因式分解_如何在Java中找到整数的质数-因式分解

    java整数的因式分解 编程课程中的常见家庭作业/任务之一是关于Prime Factorization. 要求您编写一个程序以找到给定整数的素因子 . 一个数字的素数因子是将精确地除以给定数字的所有素 ...

最新文章

  1. 类脑芯片怎么搞?三星哈佛:直接复制粘贴神经元 | Nature子刊
  2. jQuery 效果 - 动画 animate() 方法
  3. bs架构的系统能连接mysql吗_HTTP、BS架构
  4. Linux开机启动过程(7):内核执行入口点
  5. Ps 初学者教程,如何使用色阶功能提高照片的对比度和亮度?
  6. PSP1000/2000/3000 PSPgo全主机介绍(2)
  7. 分享一款免费刷相关搜索、联想下拉推荐、网页快照排名的软件
  8. Excel辅助“校验”
  9. mac mysql mysqldb_在 Mac 中安装 MySQLdb (Python mysql )
  10. [LaTeX] 将minipage环境中的脚注(footnote)放到正文并添加超链接
  11. 分享四个一键生成神器:Logo、App、小程序、H5等五分钟快速搞定
  12. 实现Mac窗口最小化动画效果
  13. win10计算机打开速度慢,win10电脑系统开机启动速度慢如何解决?
  14. Servlet实例化异常以及tomcat子级启动失败的可能原因
  15. 解决Keras的failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED、attempting to perform BLAS operat
  16. python求语音信号短时能量、短时过零率、语谱图
  17. ASEMI快恢复二极管ES8JC参数,ES8JC规格,ES8JC封装
  18. 大数据平台的搭建教程及软件工具!
  19. Java实现基于SQL server的图形化图书管理系统
  20. D19-读论文D19算法D19

热门文章

  1. 戴尔电脑好还是华为好_华硕和戴尔笔记本哪种好 华硕和戴尔优缺点分析【详解】...
  2. 依赖 netty spring_十分钟带你了解Spring的七大知识点,程序员必了解
  3. 定时器和promise_从Promise链理解EventLoop
  4. python123平台作业答案第十一周_马哥2016全新Linux+Python高端运维班第十次作业
  5. 生活中java继承例子_简单继承例子:java
  6. php用到的mysql语句_PHP中常用到的一些MySQL语句_php
  7. wpf 代码获取contextmenu_[C#] 转:在WPF里面获取右键弹出菜单(ContextMenu)的鼠标点击源(Owner)控件...
  8. Redis(五):List集合数据类型详解
  9. 区间DP初探 P1880 [NOI1995]石子合并
  10. Visual Studio 2017 15.6发布