我需要使用数组添加两个长度为50的数字。我相信我已经做了正确的转换,但我不知道如何返回要打印的最终总和。我的方法用于添加是否正确?我是否需要返回类型,或者我可以使用它返回任何内容( void )?
import java.util.Scanner;
public class intAdding {
public static void main(String[] args) {
String x,y;
String a[] = new String[50];
String b[] = new String[50];
System.out.println("Please enter two numbers with up to 50 digits: ");
Scanner stdIn = new Scanner(System.in);
x = stdIn.next();
y = stdIn.next();
System.out.println("first number: " + x);
System.out.println("second number: " + y);
a[] = stringToIntArray(x);
a[] = stringToIntArray(y);
int[] result = new int[51];
result = null;
addnum(a, b, result);
System.out.println(result);
}
void addnum(int c[50], int d[50], int sum[51]) {
int carry=0;
int temp;
int i;
for(i=0; i<=50; i++) {
temp=c[i]+d[i]+carry;
sum[i]=temp%10;
carry=temp/10;
}
}
答案 0 :(得分:3)
一种简单的方法是使用BigInteger
。数组逻辑全部由引擎处理:
BigInteger bigX = new BigInteger(x);
BigInteger bigY = new BigInteger(y);
BigInteger sum = bigX.add(bigY);
System.out.println(sum);
答案 1 :(得分:1)
由于数组是引用类型,因此您不必显式返回结果。使用addNum()方法可以void
。您必须进行以下更改(删除带结果的空赋值) -
int[] result = new int[51];
addnum(a, b, result);
System.out.println(result);
你必须做出更改 -
b[] = stringToIntArray(y); //instead of a[] = stringToIntArray(y);
但使用java.math.BigInteger
的最佳方式。