java 中带有 for 循环的数组计算
Calculations with arrays with a for loop in java
我在 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];
我正在使用 for 循环将值添加到 pag[];
for(int i=0;i<pag.length;i++){
pag[i]=i;
}
我将计算保存在 calc1
在这种情况下pag_size=4;
所以pag_array_size=16;
所以我需要16次计算
这里是手动计算的:
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];
calc1[8] = marc[2] * pag_size + pag[0];
calc1[9] = marc[2] * pag_size+ pag[1];
calc1[10] = marc[2] * pag_size + pag[2];
calc1[11] = marc[2] * pag_size + pag[3];
calc1[12] = marc[3] * pag_size + pag[0];
calc1[13] = marc[3] * pag_size + pag[1];
calc1[14] = marc[3] * pag_size + pag[2];
calc1[15] = marc[3] * pag_size + pag[3];
计算的输出是
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++;
}
}
这可以通过嵌套 for-loop
来完成,如下所示:
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;
}
你应该在 for 循环中使用 for 循环这里是一些例如(伪代码)
for(i in marc){
for(j in pag){
//your code goes here
}
}
试试这个:
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 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]
我在 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];
我正在使用 for 循环将值添加到 pag[];
for(int i=0;i<pag.length;i++){
pag[i]=i;
}
我将计算保存在 calc1
在这种情况下pag_size=4;
所以pag_array_size=16;
所以我需要16次计算
这里是手动计算的:
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];
calc1[8] = marc[2] * pag_size + pag[0];
calc1[9] = marc[2] * pag_size+ pag[1];
calc1[10] = marc[2] * pag_size + pag[2];
calc1[11] = marc[2] * pag_size + pag[3];
calc1[12] = marc[3] * pag_size + pag[0];
calc1[13] = marc[3] * pag_size + pag[1];
calc1[14] = marc[3] * pag_size + pag[2];
calc1[15] = marc[3] * pag_size + pag[3];
计算的输出是
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++;
}
}
这可以通过嵌套 for-loop
来完成,如下所示:
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;
}
你应该在 for 循环中使用 for 循环这里是一些例如(伪代码)
for(i in marc){
for(j in pag){
//your code goes here
}
}
试试这个:
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 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]