[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 ?
O Valor de Index é o de X ?