次のコードは、この出力を生成します。
aaab -> aabb -> abbb -> bbbb
私の目標は、次のようにすることです。
aaab -> aaba -> abaa -> baaa
しかし、なぜこの結果が得られたのかを理解するのに苦労しています。
String abcd = 'abcd';
int l=3;
byte[] word=new byte[]{abcd[0],abcd[0],abcd[0],abcd[0]};
System.out.println(new String(word)); // print: aaaa
while (l >= 0) {
byte[] present=word; // !!!
present[l + 1 - (l - (--l))] = abcd[1];
System.out.println(new String(present)); // print: aaab -> aabb -> abbb -> bbbb
}
System.out.println(new String(word)); // print: bbbb
この行を変更すると(5):byte[] present=word;
にbyte[] present=new byte[]{abcd[0],abcd[0],abcd[0],abcd[0]};
その後、目的の出力が得られます。なぜこうなった?