java中带有for循环的数组的计算

java中带有for循环的数组的计算,java,arrays,for-loop,calculation,Java,Arrays,For Loop,Calculation,我正在用java计算数组这是代码,我有3个数组: int pag_size; int pag_array_size=pag_size*4; int[] pag = new int [pag_size]; int[] marc = {5, 6, 1, 2}; int[] calc1 = new int[pag_array_size]; 我将这些值添加到pag[]带有for循环 for(int i=0;i<pag.length;i++){ pag[i]=i; } 计算的结果是

我正在用java计算数组这是代码,我有3个数组:

int pag_size;
int pag_array_size=pag_size*4;


int[] pag = new int [pag_size];
int[] marc = {5, 6, 1, 2};
int[] calc1 = new int[pag_array_size];
我将这些值添加到
pag[]带有for循环

for(int i=0;i<pag.length;i++){
    pag[i]=i;
}
计算的结果是

20 21 22 23 24 25 26 27 4 5 6 7 8 9 10 11

如何使用
for
do while
循环或任何其他方法进行计算?

如果我遵循以下模式:

    calc1[0] = marc[0] * pag_size+ pag[0];
    calc1[1] = marc[0] * pag_size + pag[1];
    calc1[2] = marc[0] * pag_size + pag[2];
    calc1[3] = marc[0] * pag_size + pag[3];

    calc1[4] = marc[1] * pag_size + pag[0];
    calc1[5] = marc[1] * pag_size + pag[1];
    calc1[6] = marc[1] * pag_size + pag[2];
    calc1[7] = marc[1] * pag_size + pag[3];
您可以执行一个简单的循环,并在填充页面后使用模来重新输入marc和pag数组的索引:

int pagIndex = 0;
int marcIndex = 0;
for (int i = 0; i < calc1.length; i++){
     calc1[i] = marc[marcIndex] * pag_size + pag[pagIndex++];

   if (i % pag_size == 0){
     pagIndex = 0;
     marcIndex++;
   }
}
int-pagIndex=0;
int-marcIndex=0;
对于(int i=0;i
这可以通过嵌套的
for循环来完成,如下所示:

int calcAccum = 0;
for(int i=0;i<marc.length;i++){
    for(int j=0;j<4;j++){
        calc1[j+calcAccum] = marc[i] * pag_size + pag[j];
    }
    calcAccum+=4;
}
int calccum=0;

for(int i=0;i您应该在for循环中使用for循环,这里有一些示例(伪代码)
for(marc中的i){
用于(第页中的j){
//你的密码在这里
}
}

试试这个:

for (int i = 0; i < pag.length; i++) 
    for (int j = 0; j < marc.length; j++) 
        calc1[i * pag.length + j] = marc[i] * pag.length + pag[j];
    int pag_size = 4;
    int pag_array_size=pag_size*4;


    int[] pag = new int [pag_size];
    int[] marc = {5, 6, 1, 2};
    int[] calc1 = new int[pag_array_size];

    for(int i=0;i<pag.length;i++){
           pag[i]=i;
    }

    for (int i = 0 ; i <  pag_array_size; i++){
        calc1[i] = marc[i/pag_size]* pag_size  + pag[i%pag_size];
        System.out.println(calc1[i]);
    }
for(int i=0;i
非常简单:)

试试这个:

for (int i = 0; i < pag.length; i++) 
    for (int j = 0; j < marc.length; j++) 
        calc1[i * pag.length + j] = marc[i] * pag.length + pag[j];
    int pag_size = 4;
    int pag_array_size=pag_size*4;


    int[] pag = new int [pag_size];
    int[] marc = {5, 6, 1, 2};
    int[] calc1 = new int[pag_array_size];

    for(int i=0;i<pag.length;i++){
           pag[i]=i;
    }

    for (int i = 0 ; i <  pag_array_size; i++){
        calc1[i] = marc[i/pag_size]* pag_size  + pag[i%pag_size];
        System.out.println(calc1[i]);
    }
intpag_size=4;
int pag_数组大小=pag_大小*4;
int[]pag=新int[pag_size];
int[]marc={5,6,1,2};
int[]calc1=新int[pag_数组_大小];
对于(int i=0;i您可以使用流:

int pag_size = 4;

int[] pag = IntStream.range(0, pag_size).toArray();
int[] marc = {5, 6, 1, 2};      

int[] calc1 = Arrays.stream(marc)
    .map(i -> i * pag_size)
    .flatMap(i -> Arrays.stream(pag).map(i2 -> i + i2))
    .toArray();

System.out.println(Arrays.toString(calc1));
输出:

[20, 21, 22, 23, 24, 25, 26, 27, 4, 5, 6, 7, 8, 9, 10, 11]

好的,但是在for循环中,它能像@CraighR8806这样工作吗?
for(int j=0;j@BlazePage001你能解释一下你的意思吗?在第二个for循环中,我能用
pag_size
的值来确定for重复的次数吗?@BlazePage001是的,你可以用
pag_size
@Printam Banerjee替换
4
,谢谢它帮了我很多忙