+ 12

[SOLVED]i have a small issue with this loop.please, why after iterate it ,the result of a[i] is always equals to 2 but not 3 ?

int a[] ={3,2,1}; for (int i= 1; i < 3; i++){ a[0] *= a[i]; // why here is 3*2 but not 3*3. System.out.println(a[0]); } //output: 6 for solving it I have started to count at 2 because int i = 1, then after the condition i < 3 I thought that a[i] must be equals to 2+1 (after iteration ) but no, it's only 2 which is used for a[i],why?? (here is my doubt) sorry for my English😊 all contributions are welcome .thanks in advance😊.

25th Jun 2018, 6:03 PM
Hans Larry Mba Bekale
Hans Larry Mba Bekale - avatar
9 Réponses
+ 15
👍got Manual ,my mistake was to think that loop starts at 1 and makes addition of a[1] and a[2] (2+1 when is less than 3) before to multiplies the result of addition by the value of a[0] . finally i can understand how this loop runs! now it's ok! thank you!
25th Jun 2018, 7:38 PM
Hans Larry Mba Bekale
Hans Larry Mba Bekale - avatar
+ 11
sorry D⚽⚽⚽⚽7⃣7⃣7⃣ I forgot to write System.out.println(a[0]);
25th Jun 2018, 6:20 PM
Hans Larry Mba Bekale
Hans Larry Mba Bekale - avatar
+ 7
Hans Larry Mba Bekale because the loop multiplies only the values of a[1] and a[2] loop starts at 1 stops when i is not less than 3 i = 1 a[0] = a[0] * a[1] a[0] = 3*2 i = 2 a[0] = a[0] * a[2] a[0] = 6*1 end of loop
25th Jun 2018, 6:21 PM
Manual
Manual - avatar
+ 4
First I think you should declare an other variable to store the result for example int res. The loop should be changed I=0; I <=2, then res *= a[i] I think that should give you the right result.Your array index starts always at 0 and ends at length - 1.
25th Jun 2018, 6:17 PM
TheWh¡teCat 🇧🇬
TheWh¡teCat 🇧🇬 - avatar
+ 4
I think it's better to store the result in a variable, because otherwise you are making changes in the array elements. Also it's better to loop through all elements from index 0 to array.length, because then you can be sure that you don't skip an element of the array.
25th Jun 2018, 6:28 PM
TheWh¡teCat 🇧🇬
TheWh¡teCat 🇧🇬 - avatar
+ 4
you should have put = in for loop.. for( int i =1; i <= 3; i++) another way is to take 4 in test condition.. for(int i=1; i < 4; i++)
27th Jun 2018, 8:25 PM
Harshita Gupta
Harshita Gupta - avatar
+ 2
It's because within your for loop I will never be 3 based on the condition you gave it.
26th Jun 2018, 9:32 AM
kleinboy Moshole
kleinboy Moshole - avatar
+ 1
Loop works the way You wrote it. So, in first iteration you have i=1 which gives a[0]=3*2 which is 6. In second iteration it is i=2 which gives a[0]=6*1 which is 6. When loop ends your array is {6,2,1}
25th Jun 2018, 6:20 PM
Lstiti
0
Your variables are ok but for some reason the system output is alittle messed up
28th Jun 2018, 8:16 PM
Corey Bryan
Corey Bryan - avatar