题目:实现两个字符串整数相加
输入1=-100
输入1长度4
输入2=20
输入2长度2
期望结果=-80
结果=-0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020
是否一致:false
================test6=====================
输入1=-14
输入1长度3
输入2=+356
输入2长度4
期望结果=342
结果=+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000342
是否一致:false
输入1=0
输入1长度1
输入2=0
输入2长度1
期望结果=0
结果=
是否一致:false
================test20=====================
输入1=-0
输入1长度2
输入2=0
输入2长度1
期望结果=0
结果=+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
是否一致:false
================test21=====================
输入1=+0
输入1长度2
输入2=-0
输入2长度2
期望结果=0
结果=-0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
是否一致:false这是结果测试中有些是FALSE的 就说明这个算法还没完善 请帮我改进一下 还需要改哪些地主 说明这个字符串数必须在(0,1024)之间 超过报错
下面是我的代码 public String getSum(String firstInt, String secondInt) throws Exception {
try {
return getSum(strToFsArray(firstInt), strToFsArray(secondInt));
} catch (Exception ex) {
throw new Exception("ERR:****");
}
} private String[] strToFsArray(String param) throws Exception {
if (param == null || param.trim().equals("") || param.length() > 1024) {
throw new Exception();
}
int i = 1, j = 1;
String[] result = new String[1025];
String[] paramStr = param.split("");
boolean b = false;
if (paramStr.length > 2 && paramStr[1].equals("+")
|| paramStr[1].equals("-")) {
result[0] = paramStr[1];
j = 2;
} else {
result[0] = "+";
}
for (; i < result.length; i++) {
if (result.length - i == paramStr.length - j) {
b = true;
}
if (b) {
Integer.parseInt(paramStr[j]);
result[i] = paramStr[j];
j++;
} else {
result[i] = "0";
}
} return result;
} private String getSum(String[] fisrt, String[] second) throws Exception {
if (fisrt[0].equals(second[0])) {
return sum(fisrt, second);
} else {
String[] fis = fisrt, sec = second;
if (!comper(fisrt, second)) {
fis = second;
sec = fisrt;
}
return del(fis, sec);
}
} private String sum(String[] fisrt, String[] second) throws Exception {
String result = "";
int num = 0;
int j = 1;
String head = fisrt[0];
String sum = null;
for (int i = 1024; i >= j; i--) {
sum = String.valueOf(Integer.parseInt(fisrt[i])
+ Integer.parseInt(second[i]) + num);
if (sum.length() == 2) {
result = sum.substring(1) + result;
num = Integer.parseInt(sum.substring(0, 1));
} else if (!"0".equals(sum)) {
result = sum + result;
num = 0;
}
}
if (num != 0) {
result = num + result;
}
if (head.equals("-")) {
result = head + result;
}
return result;
} private String del(String[] fisrt, String[] second) throws Exception {
String result = "";
int num = 0;
int j = 1;
String head = fisrt[0];
int sum = 0;
for (int i = 1024; i >= j; i--) {
sum = Integer.parseInt(fisrt[i]) - Integer.parseInt(second[i])
- num;
if (sum >= 0) {
result = sum + result;
num = 0;
} else {
result = Math.abs(sum) + result;
num = 1;
}
}
if (result.length() > 1) {
result = head + result;
}
return result;
} private boolean comper(String[] fisrt, String[] second) throws Exception {
int fir = 0, sec = 0;
for (int i = 1; i < 1025; i++) {
fir = Integer.parseInt(fisrt[i]);
sec = Integer.parseInt(second[i]);
if (fir > sec) {
return true;
} else if (fir < sec) {
return false;
}
}
return false;
}