for (é criada uma variável number e ela é igualada a 2; enquanto number for menor ou igual a 20; incremente 20 no valor da variavel total; incremente o valor de number de 2 em 2 )
Esse for faz a mesma coisa que o código abaixo:
for(intnumber=2; number <= 20;number += 2){total+=20;
}
userguj
Broder... é o msm que:
publicclassSum{
publicstaticvoidmain(String[]args){
inttotal=0;for(intnumber=2; number <= 20; number += 2){total+=20; }}
}
ou seja, o primeiro item
(total += 20)
do terceiro parametro do método, a cada iteração do loop, adiciona 20 ao valor da variaveltotal...
conseguiu entender :?: :!:
:)
M
m-bax
putz, desculpem escrevi o código errado.
Alguém poderia fazer o teste de mesa do código abaixo:
publicclassSum{publicstaticvoidmain(String[]args){inttotal=0;for(intnumber=2;number<=20;total+=number,number+=2);System.out.printf(" sum is %d\n ",total);}}
userguj
so muda que agora o valor da variável total vai ser incrementada com o valor da variável number, sakou ?!
eh interessante VC conseguir fazer estes testes tbm… pra treinar e ficar bom…
M
m-bax
Sim então userguj, eu sei o que ele faz, mas gostaria de saber como ele faz, ou seja, o passo a passo que a JVM segue na hora de executar o código. Por isso eu pedi o teste de mesa.
userguj
primeira instruçao
number = 2; total += number
ou seja… number = 2, quando executar total +=number, o total passa a valer 2
dai eli ai incrementa number += 2, ou seja, number agora é igual a 4, pois number = number + 2; sakou ?!
agora number = 4, quando executar total += number, o total passa a valer 6, pois total = total + number, onde total = 2 e number = 4… sakou ?!
i dai vai rolar isso enquanto number <= 20…
M
m-bax
Agora eu já consegui fazer userguj, é que eu tinha feito o teste de mesa aqui em casa e não tinha dado certo, ai eu pensei que não tinha entendido, mas agora eu refiz e deu certo.
Rivan_Henrique
Fala m-bax.
Dê uma olhadinha no código que fiz, o feedback está no próprio código comentado!
Qualquer dúvida mandaê, espero que ajude!
publicclassSimulado{publicstaticvoidmain(String[]args){newSimulado().forNormal();System.out.println("------");newSimulado().forTeoria();}publicvoidforNormal(){inttotal=0;for(inti=0;i<5;total=10,i++){System.out.println(i+" - "+total);}}publicvoidforTeoria(){/* * Este método é equivalente ao método forNormal(), vamos dizer de uma * forma explodida ;) */inttotal=0;inti=0;// for([inicialização]; [condição lógica]; [incremento])for(;;){// Laço infinito.if(i<5){System.out.println(i+" - "+total);}else{break;}/* * Últimas instruções a serem executadas no laço, ou seja, as que * veêm depois do segundo (;). * Depois de imprimir na tela você vai reparar que a primeira * impressão de total vai ser igual a "0", devido ela ser a última * parte do laço. */total=10;i++;}/* * Observando a forma como o for é construido, a parte de * inicialização vem antes do primeiro (;), então como mostrado acima * é como se a variável fosse criada antes do laço começar, * exatamente como mostrado, nesta parte também poderia ser criado * mais variáveis do mesmo tipo, por exemplo(int i = 0, j = 10;;). * Entre o primeiro (;) e o segundo, é onde fazemos o teste lógico * para dar continuidade ou parar o laço. * E por fim na terceira parte, ou seja, depois do segundo (;) é onde * o laço é incrementado, podendo atribuir valores a variáveis que * pertençam ao escopo do método e que tenham sido inicializadas. */}}
plugado!
Rivan_Henrique
Opa não tinha visto o seu post :lol:
plugado!
userguj
Tranquilo…
Abraços !!
M
m-bax
Opa rivan henrique,
Eu já tinha entendido essa condição do for, onde vc pode colocar várias expressões separadas por virgulas nas expressões de inicialização e incremento, e como elas são executadas pela JVM.
Mas mesmo assim muito obrigado por se dar ao trabalho de desenvolver esse código e comentá-lo ahahha.
É sempre bom ver pessoas no fórum com o intuito de ensinar ao invés de criticar.