SBh
SBh

Reputation: 1

Does for each loop modify the array? I read that it doesn't. However my program is. Pls explain. I am Java beginner

Here is the code that I am testing. My string array a showing modified array elements as dogs, cats, turtles.

String[] a = {"dog", "cat", "turtle"};
System.out.println(java.util.Arrays.toString(a));//line
int i1= 0;
for (String j : a) {
    a[i1]=j+"s";
    if (i1 < 2) {
        i1++;
    }
    System.out.println(i1);
    System.out.println(a[i1]);
}  
System.out.println();
System.out.println(java.util.Arrays.toString(a));//line

output

[dog, cat, turtle]
[dogs, cats, turtles]

Upvotes: 0

Views: 53

Answers (2)

Samanja Cartagena
Samanja Cartagena

Reputation: 148

You are modifying your own array by concatenating s to it. Try doing this

String[] a = {"dog", "cat", "turtle"};
System.out.println(java.util.Arrays.toString(a));//line
int i1= 0;
for (String j : a) {
 a[i1]=j;
 if (i1 < 2) {
    i1++;
 }
System.out.println(i1);
System.out.println(a[i1]);
}  
System.out.println();
System.out.println(java.util.Arrays.toString(a));//line

Upvotes: 0

JustMe
JustMe

Reputation: 119

The for-loop on it's own isn't modifying anything just reading the Object, but you are modifying it with a[i1]=j+"s";. You can modify any public object anywhere in your code as long as you're in the correct scope and it isn't a final.

Upvotes: 1

Related Questions