控制台数据需要累加的数字串个数及数字串,计算成累加和并输出
5
1111111111111111111111111111
23413412323452345
2222222222222222222
6666666666666666666666
44444444444444444444444444
方法一:使用java api
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String result="";
int n = sc.nextInt();
for(int i = 0; i < n; i++){
String input=sc.next();
if(result.equals("")) {
result=input;
}
else {
BigInteger b1=new BigInteger(result);
BigInteger b2=new BigInteger(input);
result=b1.add(b2).toString();
}
}
System.out.println(result);
}
方法二:
- 1、读取输入数据
- 2、循环相加两数,获取输入最长数据的长度,不足最长长度的数字串前导补零
- 3、两长整形数字的字串从个位开始,向十位,百位....循环相加
- 4、并把上次的十位进数加入本次个位数,再以字符串形式组合
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String result="";
int n = sc.nextInt();
for(int i = 0; i < n; i++){
String input=sc.next();
if(result.equals("")) {
result=input;
}
else {
result=addLong(result,input);
}
}
System.out.println(result);
}
private static String addLong(String n1, String n2) {
int n1Length=n1.length();
int n2Length=n2.length();
int maxLength=n1Length>n2Length?n1Length:n2Length;
for(int i=0;i<maxLength-n1Length;i++) {
n1="0"+n1;
}
for(int i=0;i<maxLength-n2Length;i++) {
n2="0"+n2;
}
String addResult="";
int js=0;
int gs=0;
for(int i=maxLength-1;i>-1;i--) {
int v1=Integer.parseInt(String.valueOf(n1.charAt(i)));
int v2=Integer.parseInt(String.valueOf(n2.charAt(i)));
int v=v1+v2;
gs=v%10;
addResult=(gs+js)+addResult;
js=v/10;
}
if(js>0) {
addResult=String.valueOf(js)+addResult;
}
return addResult;
}