【问题标题】:How to convert large numbers in a text file (strings) into ints and add them如何将文本文件(字符串)中的大数转换为整数并添加它们
【发布时间】:2016-12-30 04:27:14
【问题描述】:

如何将文本文件(字符串)中的大数转换为整数并添加。

3123123123123 759345 903470283

1839282039485028304849404 3839282039485028304849404

22 32

9888 9233

93373849503817264 38394058293045859 38394932293045859 93373849503817264

38394058293045859

90349329492349 0

94840

10000000000000000000 600000

32453 325235 32

100 0

34

0

0 0 0

这是我正在使用的文本文件。我需要将这些转换为整数并添加它们。我还没有学习 parseInt,所以除非有任何解决方法,否则我想知道如何将它们转换为整数并将它们在每一行中求和。

【问题讨论】:

  • 我看到每行数字之间有空格。它们是单独的数字吗?
  • 您无法将 1839282039485028304849404 转换为 int,但您可能正在寻找 BigInteger 对象。
  • 我们不能使用 BigInteger...是的,它们是单独的数字。
  • 嗯,这是正确的做法。如果你的老师禁止你做正确的事,那么最好问他们他们的想法,而不是在这里问。
  • 您是否不想使用BigInteger 并一次添加1 个数字并使用Integer.parseInt 将每个数字转换为int 并添加?

标签: java


【解决方案1】:

也许这段代码可以提供帮助。

public static void main(String[] args) throws Exception {
    // write your code here
        Scanner scanner = new Scanner(new File("C:\\directory\\test.txt"));
        List<BigInteger> bigIntegers = new ArrayList<>();
        while (scanner.hasNext()) {
            bigIntegers.add(new BigInteger(scanner.next()));
        }
        BigInteger total = new BigInteger("0");
        for(BigInteger bigInt: bigIntegers) {
            total = total.add(bigInt);
        }
        System.out.println(total);
    }

【讨论】:

  • 我不明白 是什么。
  • @MooazNasir 那是 Java 7 菱形运算符。与泛型一起使用。
  • @moocow - 有什么理由不接受这个答案吗?
【解决方案2】:

如果你不想使用大整数,你可以尝试类似的方法:

Scanner scanner = new Scanner(new File("filename.txt"));
double [] number = new double[100];
int i = 0;
while(scanner.hasNextDouble())
{
    number[i] = scanner.nextDouble();
    i++;
}

从技术上讲,这会将您的大整数存储在一个数组中,您可以从那里尝试决定如何处理它。这只是我想到的一种不使用 BigInteger 的方法。

【讨论】:

  • 我不同意。显示的数字超出了 java 中的 int 范围。所以你不能这样做。
  • 你是对的,int 不会支持这么大的数字。您必须逐个数字地填充到数组中。或者也许使用不同的数据类型?
  • 您必须使用大整数或双精度来存储如此长的数字。它们肯定超出整数范围。
  • 将代码更改为使用双数组是否可行,因为他说他不允许使用 BigInteger。
  • 但是double 在这里并不好,因为它只提供 15-16 位有效数字,因此该文件中的数字太大而无法准确存储在 double 中。唯一的选择是使用BigIntegerBigDecimal 来存储这些;或者将它们全部存储在Strings 中并滚动您自己的加法算法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-15
  • 1970-01-01
  • 2011-11-01
  • 2022-12-19
  • 2014-11-27
  • 1970-01-01
相关资源
最近更新 更多