如何在Java中对整数数组进行乘法

如何在Java中对整数数组进行乘法,java,arrays,multiplication,Java,Arrays,Multiplication,我有两个整数数组,我想将它们相乘,如下所示: int[] arr1 = {6, 1}; // This represents the number 16 int[] arr2 = {4, 2}; // This represents the number 24 我想将它们存储在新阵列中,以便产品显示为: int[] productArray = {4, 8, 3}; 我知道如何用2 x 24这样的数字进行乘法,因为我可以将这些值放入产品数组中。但是当涉及到扩展到一位数以上时,我就不知所措了

我有两个整数数组,我想将它们相乘,如下所示:

int[] arr1 = {6, 1}; // This represents the number 16

int[] arr2 = {4, 2}; // This represents the number 24
我想将它们存储在新阵列中,以便产品显示为:

int[] productArray = {4, 8, 3};

我知道如何用2 x 24这样的数字进行乘法,因为我可以将这些值放入产品数组中。但是当涉及到扩展到一位数以上时,我就不知所措了。

你为什么要这样做?无论如何,这里有一个例子:

int total1; // to find what the array represents in #
for (int c = 0; c < arr1.length() - 1; c++) {
 total1 += arr1[c] * Math.pow(10, (c+1)); // takes the number and adds it to the decimal number it should be
}
int total2;
for (int c = 0; c < arr2.length() - 1; c++) {
 total1 += arr2[c] * Math.pow(10, (c+1));
}
String s = Integer.toString(total2*total1);
for (int c = s.length()-1; c >= 0; c--) { // adds int to array backwards
  productArray.add(Integer.parseInt(s.atIndex(c)));
}
注意:我没有对此进行bug测试,也没有在JVM中运行它。Java不是我常用的编程语言,所以我可能犯了一些错误。productArray需要改为ArrayList。我怀疑Integer.parseInt仅用于字符串,因此您可能必须搜索该函数的char版本。此外,你需要包括数学

int arr1num, arr2num, product;
multiplier = 1;
for (i = arr1.size();i>0;i--){
arr1num = arr1num + (arr1[i] * multiplier);
multiplier = multiplier * 10;
}
-对第二个数组也执行此操作

-现在我们有arr1num和arr2num作为数组和 就拿产品吧

product = arr1num * arr2num;
-现在将其存储在数组中

int divisor = 10;
int number;
for(i=0;i<int.length();i++){

number = product % divisor;
productArray.add(number);
divisor = divisor * 10;
}

您可以使用它,尽管它不是您可以用来执行此操作的最佳算法:

public static int[] multiplyArrays(int[] a, int[] b){
    //turns arrays into integers
    String num1 = "";
    for (int i = a.length - 1; i > -1; i--){
        num1 += a[i];
    }

    String num2 = "";
    for (int i = b.length - 1; i > -1; i--){
        num2 += b[i];
    }

    //does calculation
    char[] answer = Integer.toString(Integer.parseInt(num1) * Integer.parseInt(num2)).toCharArray();

    //converts char array into int array
    int[] answer2 = new int[answer.length];

    for (int i = 0; i < answer.length; i++){
        answer2[answer.length - i - 1] = Integer.parseInt(String.valueOf(answer[i]));
    }

    return answer2;
}

这是错误的,他想在人类在学校学习时模拟乘法,你的代码不会乘法16*24@AlexWien我意识到我之前犯了一个错误并编辑了代码,所以我不确定你也引用了哪个版本,这个版本也错了吗?她真的在模仿学校吗?从什么时候开始我们倒着写数字了?@MikeG:从右到左存储数字是完全合理的,这样你在做乘法或加法时可以从头到尾循环。此外,模仿学校是学习任意精度数学库的一个极好的方法。我不知道你为什么对这件事这么严厉。@mellamokb我不是故意对这件事这么严厉的,所以我道歉。我很困惑亚历克斯维恩是如何得出这样的结论的:OP是模仿学校的,b/c我没有注意到任何看起来像是试图模仿学校的东西。当我说我们是指学校的时候。当我们倒写的时候:自从罗马人之后,阿拉伯数字被引入,但只有从右到左阅读的阿拉伯数字才适合。既然我们的数字不理想,试着读一个12位数的数字。如果没有跳跃和前后扫描,你无法阅读。为什么你的for循环在添加?6+1不等于16。。。。抱歉,我只是有点困惑。没关系,我刚刚意识到您使用的是字符串,而不是数字。您希望如何使用java标准或无限位数执行乘法?就像创建巨大的基于素数的加密键一样,您可以使用a*=b而不是a=a*b,这会使事情变得更整洁。