0

2 つの整数の配列があり、次のようにそれらを乗算したいと考えています。

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 のような数値を乗算してそれを行う方法を取得します。これは、それらを積配列の値にプッシュするだけだからです。しかし、一桁を超えて拡大することになると、私は途方にくれます。

4

3 に答える 3

3
int arr1num, arr2num, product;
multiplier = 1;
for (i = arr1.size();i>0;i--){
arr1num = arr1num + (arr1[i] * multiplier);
multiplier = multiplier * 10;
}

--2番目の配列に対してもこれを行います

-これで、両方の配列の数として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;
}
于 2013-03-20T01:25:33.107 に答える
3

なぜこれを行う必要があるのですか?とにかく、ここに例があります:

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)));
}

注: これをバグ テストしたり、JVM を介して実行したりしていません。Java は私の通常のプログラミング言語ではないため、いくつか間違いを犯した可能性があります。「productArray」は代わりに ArrayList<> である必要があります。Integer.parseInt() は文字列専用であると思われるため、関数の char バージョンを検索する必要がある場合があります。また、数学を含める必要があります...

于 2013-03-20T01:14:02.203 に答える
1

これを使用できます (ただし、これを行うために使用できる最適なアルゴリズムではありません)。

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;
}
于 2013-03-20T01:29:51.890 に答える