您的位置:首页 > 编程语言 > Java开发

Java 大数加法HdAcm1002

2014-03-14 22:07 531 查看
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
String num1 = "";
String num2 = "";
int m = 1;
while(m <= n){
num1 = cin.next();
num2 = cin.next();
int len1 = num1.length();
int len2 = num2.length();
int lenMin = len1 < len2 ? len1:len2;
int lenMax = len1 > len2 ? len1:len2;
char[] res = new char[lenMax+1];
//开始进位 为 0
int jinwei = 0;
//从两个字符串的尾部开始计算
for(int i = 1; i <= lenMin; i++){
int a = num1.charAt(len1 - i) - '0';
int b = num2.charAt(len2 - i) - '0';
if(a + b + jinwei <= 9){
//res 的长度为 lenMax
res[lenMax + 1 - i] = (char)(a + b + jinwei + '0');
jinwei = 0;
}
else{
res[lenMax + 1 - i] = (char)(a + b - 10 + jinwei + '0');
jinwei = 1;
}
}
//将长字符串的值赋给res
if(lenMax == len1){
for(int j = len1 - lenMin - 1; j >= 0;j--) {
int a = num1.charAt(j) - '0';
if( a + jinwei <= 9){
res[j+1] = (char)(a + jinwei + '0');
jinwei = 0;
}
else{
res[j+1] = (char)(a + jinwei - 10 + '0');
jinwei = 1;
}
}
}
else{
for(int j = len2 - lenMin - 1; j >= 0;j--) {
int a = num2.charAt(j) - '0';
if( a + jinwei <= 9){
res[j+1] = (char)(a + jinwei + '0');
jinwei = 0;
}
else{
res[j+1] = (char)(a + jinwei - 10 + '0');
jinwei = 1;
}
}
}
System.out.println("Case" + " " + m + ":");
if(jinwei == 1){
res[0] = '1';
System.out.println(num1 + " " + "+" + " " + num2 + " " + "=" + " " + String.valueOf(res));
}
else {
System.out.println(num1 + " " + "+" + " " + num2 + " " + "=" + " " + String.valueOf(res, 1, lenMax));
}
if(m < n){
System.out.println();
}
m++;
}
cin.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: