Ajuda com código

[code]public class Mix4 {
int counter = 0;
public static void main(String [] args) {
int count = 0;
Mix4 [] m4a = new Mix4[20];
int x = 0;

while(x < 7) {

m4a[x] = new Mix4();
m4a[x].counter = m4a[x].counter + 1;
count = count + 1;
count = count + m4a[x].maybeNew(x); // Esse X do metodo maybeNew é o argumento dele certo e o valor de Index vai receber o valor de x, certo ?
x = x + 1;
}
System.out.println(count + " " + m4a[1].counter);
}

public int maybeNew(int index) { // aqui indexo recebe o valor de x ?

if (index < 7) {

Mix4 m4 = new Mix4();
m4.counter = m4.counter + 1;
return 1;
}
return 0;
}
}[/code]
Queria saber pq q o final da 14 1, ja fiz 400 teste de mesa e nada, nunca chego no resultado.

Colega, estudei seu código e já entendi porque sempre dá 14 1. Acompanhe:

while(x < 7) { m4a[x] = new Mix4();
A cada iteração uma nova posição da array m4a apontará para um novo objeto Mix4().

		m4a[x].counter = m4a[x].counter + 1;

Agora a [color=red]variável de classe[/color] counter é incrementada em 1. :idea: Esta variável é única para cada objeto do seu array.
Uma vez que voce só incrementa ela UMA VEZ para cada objeto, no final quando voce for imprimi-la ela terá o valor de… adivinhe? 1

count = count + 1;
Aqui nossa [color=red]variável local[/color] é incrementada em 1.

//chamada para o método maybeNew(int) SEMPRE retornará 1

Agora estamos chamando o método maybeNew e passando-lhe um valor que varia de 0 até 6, certo?
Devido a sua instrução if (index < 7) { o método sempre vai retornar 1, pois voce nunca vai passar o valor 7 para ele se continuar chamando-o dentro daquele loop while(x < 7), afinal quando x==7 dai o loop não executará mais!

count = count + m4a[x].maybeNew(x);

Sendo assim nossa [color=red]variável local[/color] count vai ser novamente incrementada em 1.

Na primeira iteração a variável count termina com valor 2. Na segunda com valor 4, na terceira com valor 6… e na sétima com valor 14.
E a variável m4a[1].counter ainda estará com valor 1.

System.out.println(count + " " + m4a[1].counter);

Exibe 14 1

nossa como sou tão burro, entendi cara, e o seguinte o valor de Index é o valor de x certo ? e pq ele retorna 1 qual a diferença de retornar e n retornar ?

Alguem ser ?

O Valor de Index é o de X ?