java - 在java中,从另一个数字字符串中减去1个数字字符串的最佳方法是什么

标签 java

想要处理以下问题

String findDifference(String, String)
{
   str1 - str2
}

如果

   str1 = "1002456789100245678910024567891002456789100245678910024567891002456789100245678910024567891002456789100245678910024567891002456789100245678910024567891002456789";
   str2 = "0022446611002244661100224466110022446611002244661100224466110022446611002244661100224466110022446611002244661100224466110022446611002244661100224466110022446611";
   output = "1000010178100001017810000101781000010178100001017810000101781000010178100001017810000101781000010178100001017810000101781000010178100001017810000101781000010178"

   str1 = "1002456789100245678910024567891002456789100245678910024567891002456789100245678910024567891002456789100245678910024567891002456789100245678910024567891002456789100245678910024567891002456789100245678910024567891002456789";
   str2 = "0022446611000000000000224466110000000000002244661100000000000022446611000000000000224466110000000000002244661100000000000022446611000000000000224466110000000000002244661100000000000022446611000000000000224466110000000000";
   output = "1000010178100245678910000101781002456789100001017810024567891000010178100245678910000101781002456789100001017810024567891000010178100245678910000101781002456789100001017810024567891000010178100245678910000101781002456789"

有没有比遍历 Str1 ctr(0,n-1) Integer.parseInt(str1[ctr]) - Integer.parseInt(str2[ctr]) 并将答案附加到 output[ctr] 更好/优化的方法?

BigInteger 能处理这么大的数字吗?

最佳答案

您正在处理非常大的数字 - 比 int 所能容纳的还要大。如果你想处理任意大的数字(内存允许),你需要使用 BigInteger:

public static String findDifference(String str1, String str2) {
    return new BigInteger(str1).subtract(new BigInteger(str2)).toString();
}

请注意,您的示例是错误的 - 输出不是 str1 - str2 的正确结果。

如果我使用这个小驱动程序:

public static void main(String[] args) {
    System.out.println(findDifference("10024567891002456789", "00224466110000000000"));
    System.out.println(findDifference("1002456789", "0022446611"));
    System.out.println(findDifference("1234567", "0111100"));
}

我得到了这个输出,并且用计算器进行验证表明这是正确的:

9800101781002456789
980010178
1123467

关于java - 在java中,从另一个数字字符串中减去1个数字字符串的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41319677/

相关文章:

java - 迭代 XML 树并从中提取数据的简单方法?

Java 面向对象编程对象范围

java - 如何正确地在java中打乱二维数组?

java - 如何正确添加声音?

java - 为什么使用 javadoc 无参数构造函数?

java - 在 Oracle ADF Faces 中获取表的渲染属性时出错

java - 数字乘以字符串

java - 使用 MiGLayout 设置 JPanel 的大小

java - 如何为 Guice 指定默认的枚举实例?

java - 通过传递txt文件创建一个数组并将数组引用变量传递给heapsort方法