2017-01-06 52 views
4

我做一個計算在Java中使用數組,這裏的代碼用數組for循環,我有3個數組:計算在Java

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(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 

我該怎麼辦的計算與fordo while環或與任何其他方法?

回答

2

試試這個:

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循環。相反,你將不得不使用'%'和&

+0

@Printam Banerjee感謝它幫了我很多 – BlazePage001

0

如果我按照這種模式:

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]; 

你可以做一個簡單的循環,並用一個模來重新初始化爲馬克和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++; 
    } 
} 
0

這可以通過嵌套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; 
} 
+0

確定,但INT for循環可以像這樣@ CraighR8806工作? 'for(int j = 0; j BlazePage001

+0

@ BlazePage001你能澄清你的意思嗎? – CraigR8806

+0

在第二個for循環中,我可以使用'pag_size'的值來確定for重複的次數嗎? – BlazePage001

0

您應該使用for循環for for循環她e是一些e.g(僞)
for(i in marc){ for(j in pag){ //your code goes here } }

0

試試這個:

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]; 

很簡單:)

0

你可以使用流:

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]