这是实际问题:
编写一个交互式程序,每个程序最多可添加50个数字的两个整数 (将整数表示为数字数组)。
这是一个家庭作业问题,使用的语言是Java。我到目前为止,但我认为它甚至不是很接近
1.输入不超过20位,但必须使用50位数
2.方法'integerToDigits'正在生成两个数组,但我无法理清如何使用它们并在main方法中添加它们。
请帮助。
package One;
import java.util.Scanner;
public class AddInt {
public static void main(String[] args) {
Long x,y;
Long a[] = new Long[50];
Long b[] = new Long[50];
System.out.println("Please enter two numbers which have no more than 50 digits: ");
Scanner s = new Scanner(System.in);
x = s.nextLong();
y = s.nextLong();
System.out.println(x+ "and "+y);
integerToDigits(x);
integerToDigits(y);
}
public static Long[] integerToDigits(Long n){
Long digits[] = new Long[50];
Long temp = n;
for(int i = 0; i < 50; i++){
digits[49-i] = temp % 10;
temp /= 10;
}
return digits;
}
}
答案 0 :(得分:1)
如果&#34;将整数表示为数字数组&#34;是一个建议而不是要求使用BigInteger的解决方案看起来像:
// read numbers from input
// store first value as String "firstNumber"
// store second value as String "secondNumber"
BigInteger a = new BigInteger(firstNumber);
BigInteger b = new BigInteger(secondNumber);
BigInteger result = a.add(b);
System.out.println("Result is " + result.toString());
如果&#34;将整数表示为数字数组&#34;是一个要求,嗯,然后它是一个愚蠢的任务:)没有人会存储这样的整数。最糟糕的情况是,如果不允许使用BigInteger,我会将其存储为String。
答案 1 :(得分:1)
输入不超过20位,但必须使用50位数。
这是因为您正在使用x = s.nextLong()
尝试将输入转换为long
。最大长值为9223372036854775807
,远不及50位数。您需要将输入作为字符串获取,然后将其转换为int[]
方法&#39; integerToDigits&#39;正在生成两个数组,但我无法理清如何使用它们并将它们添加到main方法中。
在添加数字数组方面,您可以使用我们在学校很早就学到的相同过程。
可以迭代此过程,并使用前一个的结转来添加每个数量级。
希望这些提示为您提供解决问题的方法。
如果您确实需要一个解决方案,I've produced one here似乎可以按您的要求运行。 (虽然显然不是理想的)