题解 | 高精度整数加法
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()) {
String firstStr = scanner.nextLine();
String secondStr = scanner.nextLine();
int diffNum = firstStr.length() - secondStr.length();
if(diffNum > 0)
{
for(int i = 0; i < diffNum; i ++)
{
secondStr = "0" + secondStr;
}
}else if (diffNum < 0)
{
diffNum = Math.abs(diffNum);
for(int i = 0; i < diffNum; i ++)
{
firstStr = "0" + firstStr;
}
}
int pos1 = firstStr.length() - 1;
int pos2 = secondStr.length() - 1;
StringBuilder addSb = new StringBuilder();
boolean haveCarry = false;
while(pos1 >=0 && pos2 >= 0)
{
char ch1 = firstStr.charAt(pos1);
char ch2 = secondStr.charAt(pos2);
int digit1 = ch1 - '0';
int digit2 = ch2 - '0';
int addResult = digit1 + digit2;
if(haveCarry)
{
addResult = addResult + 1;
haveCarry = false;
}
if(addResult >= 10)
{
haveCarry = true;
addResult = addResult - 10;
}
addSb.append(addResult);
pos1 -- ;
pos2 --;
}
if(haveCarry)
{
addSb.append(1);
}
System.out.println(addSb.reverse());
}
}
}

