int a[]={1,1,2,2};
int b[]={1,1,1,1,3,3,2,2};
int ab[]=new int[b.length];
我想要乘以ab[]= a[]* b[]
ab []
应该与= {1,1,2,2,3,3,4,4}
我尝试循环,但我不知道如何做到这两个数组大小不相等
答案 0 :(得分:2)
你的意思是ab [] = {1,1,2,2,3,3,4,4}?这将使它的大小为b。
假设一旦你在b中得到索引4,你想在一段时间内循环回索引0,这应该是相当简单的代码 - 我用C ++ 14编写了它。它应该是公平的适应Java。
这是输出:C:{1,1,2,2,3,3,4,4}
// Sample program to print out the product of two arrays
#include <iostream>
#include <type_traits>
int main(int argc, char* argv[])
{
int a[] = {1, 1, 2, 2};
int b[] = {1, 1, 1, 1, 3, 3, 2, 2};
constexpr auto lengthA = std::extent<decltype(a)>::value;
constexpr auto lengthB = std::extent<decltype(b)>::value;
int c[lengthB] = { 0 };
static_assert(lengthB > lengthA, "Length of b is expected to be greater than length of a!");
int indexA = 0;
for (int indexB = 0; indexB < lengthB; ++indexB)
{
c[indexB] = a[indexA] * b[indexB];
indexA = (indexA + 1) % lengthA;
}
// Lets print out the resultant array
std::cout << "C: {";
for (int indexC = 0; indexC < lengthB; ++indexC)
{
std::cout << c[indexC];
if (indexC < lengthB - 1)
{
std::cout << ", ";
}
}
std::cout << "}" << std::endl;
return 0;
}
编辑:冒着编写一些无法编译的代码的风险,这里是理论上合理但未构建的Java代码(只是真正重要的部分):
int a[]={1,1,2,2};
int b[]={1,1,1,1,3,3,2,2};
int ab[]=new int[b.length];
int indexA = 0;
for (int indexB = 0; indexB < b.length; ++indexB)
{
ab[indexB] = b[indexB]*a[indexA];
indexA = (indexA + 1) % a.length;
}
// At this point, ab should have what you need
答案 1 :(得分:1)
int a[]={1,1,2,2};
int b[]={1,1,1,1,3,3,2,2};
int ab[]=new int[b.length];
for (int i=0 ; i<b.length ; i++) {
ab[i] = b[i] * a[i%a.length];
}
这应该会给你正确的结果。但是我没有检查数组长度,或者确保数组b
比数组a
长,所以请事先考虑这样做。