```
public static int[] plusOne(int[] digits) {
long n = 0;
for(int i = 0; i < digits.length; i++) {
n = n*10+digits[i];
}
System.out.println(n);
n = 0;
for(int i : digits) {
n = n*10+digits[i];
}
System.out.println(n);
return digits;
}
```

The above code for me prints entirely different numbers for n depending on which loop I use. The first one prints out "9876543210" and the second one prints out "123456789". My input array is "{9,8,7,6,5,4,3,2,1,0}." I am changing the int[] array to a single value and expected output is the result of the classic for loop "9876543210". My understanding is that these should work essentially the same way.

### >Solution :

This line will count indexes for you:

```
for(int i = 0; i < digits.length; i++)
```

and you have to get to the real number by looking it up:

```
int digit = digits[i];
n = n*10+digit;
```

While that expression will directly give you the numbers you are interested in:

```
for(int digit : digits) {
```

so you do not look up up but use it directly:

```
n = n*10+digit;
```