添加两个最多50位的整数

时间:2014-06-23 10:47:39

标签: java arrays integer add

这是实际问题:

编写一个交互式程序,每个程序最多可添加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;
    }
}

2 个答案:

答案 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似乎可以按您的要求运行。 (虽然显然不是理想的)