杭电acm 1002 java_杭电acm 1002 java 答案错误 不知道为什么。。求大神相助

importjava.util.Scanner;publicclassLargerIntegerAdd{publicstaticvoidmain(String[]args){String[]strs=newString[2];Scannersc=newScanner(System.in);intn=sc.nextInt();intk=1;...

import java.util.Scanner;

public class LargerIntegerAdd {

public static void main(String[] args) {

String[] strs = new String[2];

Scanner sc = new Scanner(System.in);

int n = sc.nextInt();

int k = 1;

for(int j=1; j <= n ;j++) {

for (int i = 0; i < strs.length; i++) {

if (sc.hasNext()) {

strs[i] = sc.next();

}

}

System.out.println("Case " + (k++) + ":");

System.out.println(strs[0] + " + " + strs[1] + " = " + compute(strs));

System.out.println();

}

}

private static String compute(String[] strs) {

String result = "";

byte[] b1 = strs[0].getBytes();

byte[] b2 = strs[1].getBytes();

int temp = 0;

if(b1.length <= b2.length) {

int[] sum = new int[b2.length + 1];

boolean flag = false;

for(int i=b2.length - 1; i >=b2.length - b1.length ; i--) {

if(flag) {

temp = b1[i -(b2.length - b1.length)] + b2[i] + 1 - 2* '0';

}else {

temp = b1[i -(b2.length - b1.length)] + b2[i] - 2* '0';

}

flag = handOverTen(temp,sum,i);

}

for(int i= b2.length - b1.length - 1; i >= 0; i--) {

if(flag) {

temp = b2[i] + 1 - '0';

}else {

temp = b2[i ] - '0';

}

flag = handOverTen(temp,sum,i);

}

handTheTop(flag,sum);

//showRestul(sum,j);

if(sum[0] != 0) {

result += sum[0];

}

for(int i=1; i < sum.length;i++) {

result += sum[i];

}

return result;

}else {

boolean flag = false;

int[] sum = new int[b1.length + 1];

for(int i=b1.length-1; i >=b1.length - b2.length; i--) {

if(flag) {

temp = b1[i] + b2[i - (b1.length - b2.length)] + 1 - 2* '0';

}else {

temp = b1[i] + b2[i - (b1.length - b2.length)] - 2* '0';

}

flag = handOverTen(temp,sum,i);

}

for(int i= b1.length - b2.length - 1; i >= 0; i--) {

if(flag) {

temp = b1[i] + 1 - '0';

}else {

temp = b1[i] - '0';

}

flag = handOverTen(temp,sum,i);

}

handTheTop(flag,sum);

//showRestul(sum,j);

if(sum[0] != 0) {

result += sum[0];

}

for(int i=1; i < sum.length;i++) {

result += sum[i];

}

return result;

}

}

private static void handTheTop(boolean flag, int[] sum) {

if(flag) {

sum[0] = 1;

}

}

private static boolean handOverTen(int temp, int[] sum,int i) {

if(temp >= 10) {

temp = temp - 10;

sum[i + 1] = temp;

return true;

}

sum[i + 1] = temp;

return false;

}

}

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值