c语言可以写大数,我也要写大数

爪蛙爱踢程序猿 2014-12-05 12:10:57
用java写大数减法,输入任意两个正数,但是当较小的一个数减去较大的一个数时,
会出现负号,我想将负号直接放到数组里去,然后返回打印。

// 大数减法:符号暂时没完成
//通过处理我已经把两个传入的字符串变成两个int型数组a和b了
static int[] desc(int[] a,int[] b){
//将a,b弄成同样长
int len = (a.length>b.length)?a.length:b.length;
a=Arrays.copyOf(a, len);
b=Arrays.copyOf(b, len);
System.out.println(a.length+".."+b.length);

//多创建一个长度,放符号
int[] c=new int[len+1];

//退位的标志位
int flag=0;

for(int i=0;i<len;i++){

c[i]=((a[i]-flag)-b[i]+10)%10;
// System.out.print(c[i]+"...");
flag=(a[i]-flag)-b[i]>=0?0:1;
}

// System.out.println("c[len]="+c[len]);

if(flag==0)return c;

if(flag==1){
c[len]=45;//负号的int值为45
//问题在这里,当我重新调用的时候又会出现创建一个新的数组,无法将我的“-”(负号)添加到我的数组里
return desc(b,a);
}


return c;
}
...全文
161 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyc_ 2014-12-08
  • 打赏
  • 举报
回复
任性
云上飞翔 2014-12-05
  • 打赏
  • 举报
回复
引用 楼主 u013992890 的回复:
用java写大数减法,输入任意两个正数,但是当较小的一个数减去较大的一个数时, 会出现负号,我想将负号直接放到数组里去,然后返回打印。 // 大数减法:符号暂时没完成 //通过处理我已经把两个传入的字符串变成两个int型数组a和b了 static int[] desc(int[] a,int[] b){ //将a,b弄成同样长 int len = (a.length>b.length)?a.length:b.length; a=Arrays.copyOf(a, len); b=Arrays.copyOf(b, len); System.out.println(a.length+".."+b.length); //多创建一个长度,放符号 int[] c=new int[len+1]; //退位的标志位 int flag=0; for(int i=0;i<len;i++){ c[i]=((a[i]-flag)-b[i]+10)%10; // System.out.print(c[i]+"..."); flag=(a[i]-flag)-b[i]>=0?0:1; } // System.out.println("c[len]="+c[len]); if(flag==0)return c; if(flag==1){ c[len]=45;//负号的int值为45 //问题在这里,当我重新调用的时候又会出现创建一个新的数组,无法将我的“-”(负号)添加到我的数组里 return desc(b,a); } return c; }
你在调用desc(b,a)传入数组b和a时,b和a 的符号(+ 或 -)也与c数组一样,先放入b和a中。这样就统一处理符号了。再重新调用desc(b,a)时,就没有问题了。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧