Code java...resultat!!

Fermé
salyiohh - 8 nov. 2010 à 00:47
 salyiohh - 8 nov. 2010 à 21:35
salut
selon ce lien http://www.infres.enst.fr/~charon/coursJava/debutant/somme.html

le resultat de ce code est = Voila la somme des 100 premiers entiers :5050!!!!


public class SommeWhile {
public static void main(String[] arg) {
int i;
int somme;

somme = 0 ;
i = 1;
while (i <= 100) {
somme = somme + i;
i = i + 1;
}
System.out.println("Voila la somme des 100 premiers entiers : " + somme);
}
}

pouvez vous m 'expliquer comment on a obtenu ce resultat!!
apart les explication de site.
d 'abord quand je compiles mos dos renvoie q le code est errone.
A voir également:

2 réponses

Salut,

Je suppose que tu t'attendais à obtenir 100, pour cela il faudrait ecrire:

somme = somme + 1;   
//ou bien  
somme++;   

et ce serait une simple incrémentation...

Or ce que fait ce code, c'est le cumul de i à somme ce qui fait que:

au 1er des 100 "tours" de boucle on additionne i qui est à 1 ce qui donne somme = 1, ensuite on incrémente i de 1, il passe à 2.
au 2ème tour, somme passe de 1 à 1 +2 = 3 et i à 3.
au 3ème tour, somme passe de 3 à 3 +3 = 6 et i à 4.
au 4ème tour, somme passe de 6 à 6 +4 = 10 et i à 5.
etc...

Le 1er entier est i, soit 1 donc somme = 0 + 1 = 1
Le 2eme entier est i, soit 2 donc somme = 1 + 2 = 3
Le 3eme entier est i, soit 3 donc somme = 3 + 3 = 6
Le 4eme entier est i, soit 4 donc somme = 6 + 4 = 10
etc.. pour arriver à 5050
Ainsi on a bien additionné les 100 premiers entiers (1 à 100)

Tu peux ajouter le print ci-dessous pour bien voir la progression de somme:
while (i <= 100) { 
            System.out.println("l'entier i = " + i + " somme = " + somme + " + " + i + " = " + (somme +i));
            somme = somme + i; 
            i = i + 1;
         }

Cordialement,

Dan

Ps,

À mon avis il y a une petite erreur car on ne tient compte ni du 0 (zero) ni des valeurs négatives et on aurait dû dire:
"faire la somme des 100 premiers entiers positifs et supérieurs à zero"
Mais je n'ai pas consulté le lien...
0
merci bien Dan pour tes explications..
0