Probleme de débutant en java (Boucles)

Fermé
lumiere - 5 févr. 2010 à 22:42
 lumiere - 9 févr. 2010 à 02:43
Bonjour,
Je travaille présentement sur un petit exercice tout simple sur les boucles while, for et do...while. Il suffit de faire afficher un escalier de nombres comme ceci :
1
12
123
1234
12345
123456
...
et l'utilisateur doit choisir le nombre de marches. (Ça, ça va...j'utilise le Keyboard.readInt)
Je ne sais pas trop comment m'y prendre...je ne veux pas la réponse, mais quelques conseils ou du moins une idée pour partir.
Merci de votre aide !
A voir également:

16 réponses

arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
5 févr. 2010 à 22:47
Bah pas si simple de t'aider sans donner de réponse ...

Bon j'essaie hein ...

Comme on voit c'est un escalier, et comme tu dis on entre le nombre de marche à la main.
Le nombre de marche est important puisqu'il conditionne ta première boucle for.

Ensuite les nombres qui constituent les marches se suivent tous, la encore ta deuxième boucle est conditionné par le nombre de marche.

Si tu comprends pas c'est normal je suis pas doué en explications ^^
0
cedrich2005 Messages postés 21 Date d'inscription mercredi 30 août 2006 Statut Membre Dernière intervention 5 février 2010 1
5 févr. 2010 à 23:20
oui je suis d accord avec arth
0
Eleth Messages postés 128 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 26 février 2010 17
5 févr. 2010 à 23:39
Salut,

Si tu as des difficultés à imbriquer deux boucles regarde comment faire ça en une seule. Ma proposition peut être plus facile ou plus compliqué suivant là où tu bute.

Mais soit tu fais comme précédemment indiqué soit quelque chose comme ça (toujours en essayant de ne te donner que des indices) :

Ton escalier je le vois comme une "phrase" qui s'agrandit à chaque fois. ce qui donnerait quelque chose comme ça :

au départ ta "phrase" serait seulement ta partie de phrase initiale (ici 1)
puis
ta partie initiale + une nouvelle partie formée par (ta partie initiale(1)+1) donc (1 et 2)
tes parties précédentes + une nouvelle formée par (ta partie précédente(2)+1) donc (12 et 3)
...

Pense bien à toutes les variables dont tu aura besoin.
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
5 févr. 2010 à 23:45
C'est une autre approche en effet.

Mon clavier me démange presque ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Eleth Messages postés 128 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 26 février 2010 17
5 févr. 2010 à 23:51
Bon par contre j'insiste si tu es déjà partis sur une autre piste ne t'embrouilles pas avec la mienne.
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
5 févr. 2010 à 23:51
ca dépend avec la tienne on ne fait qu'une seule boucle et pas deux.
0
Eleth Messages postés 128 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 26 février 2010 17
5 févr. 2010 à 23:56
Oui moi je proposais ça si justement tu bloquais sur le fait de faire deux boucles mais si tu nous disais plus précisément où tu bloques et en nous donnant ton code on pourrait plus facilement t'aider sans te donner la réponse.
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
6 févr. 2010 à 00:01
Ah mais c'est pas moi qui demande je ne fais que constater que nous avons 2 approches ;-)
0
Eleth Messages postés 128 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 26 février 2010 17
6 févr. 2010 à 00:04
Han excuse moi je n'étais pas remonté assez haut dans le topic j'ai vu un pseudo familier et j'ai foncé tête baissé :o c'est malin
0
Je viens de voir vos messages...dslée je n'avais pas activé le retour par email. Je m'y met tout de suite et je vous reviens des que j'ai une question...ce qui va surement arriver ! :) Merci
0
Rebonjour,
Voici ce que j'arrive à faire...ce qui ne me donne pas du tout ce que je veux.

public class Suite
{
public static void main (String[] args)
{
System.out.print ("n = ");
int n = Keyboard.readInt();
int i = 1;
while(i <= n)
{
System.out.println(i);
int a = (i +1);
int b = i;
i++;
while(b< a)
{
System.out.print(b);
b++;
}
}

}
}
J'obtiens pour n = 4 par exemple :
1
12
23
34
4
Je n'arrive pas à voir comment je peux revenir à 1 apres le 3e passage dans la boucle. Merci de m'aider, la je suis tout perdu dans mes variables...
0
public class Suite
{
    public static void main (String[] args)
    {
	System.out.print ("n = ");
	int n = Keyboard.readInt();
	int i = 1;
	while(i <= n)
	    {
		System.out.println(i);
		int a = (i +1);
		int b = i;
		i++;
		while(b< a)
		    {
			System.out.print(b);
			b++;
		    }
	    }
		
    }
}

Dslé, j'avais oublié de conserver l'indentation...ça va etre plus facile pour la lecture comme ca. Merci.
0
Utilisateur anonyme
8 févr. 2010 à 07:18
Salut,

Voici la piste en une seule boucle:

Bon, tu saisis bien un nombre de lignes (les marches).
Tu dois partir de principe qu'une ligne est un String.

Ce que tu veux, c'est afficher n lignes, la 1ere étant 1 d'après ton exemple.
On sait également qu'au départ cette valeur 1 est dans i.
A chaque tour de la boucle while, tu dois donc ajouter i (int) à ligne (String).
Ajouter quelque chose à un String porte un nom, c'est ce que tu dois trouver...
Quand c'est fait tu affiches, puis, incrémentes i de 1, et "remonter".
C'est tout.

Cordialement,

Dan
0
Rebonjour,
Merci beaucoup, c'est en effet ce qui me manquait...la conversion des Int. Ça fonctionne parfaitement. Maintenant, je m'attaque à mon vrai probleme qui est de faire une pyramide de nombres, comme ceci :
n = 4
1234321
12321
121
1
Normalement, ça devrait reposer sur le même principe...je vous fais signe si j'ai des questions. Sinon merci beaucoup pour votre aide ! :)
0
Utilisateur anonyme
9 févr. 2010 à 00:03
Re,

Si tu permets, je te donne ma solution:

int n = clavier(); // ou pour toi je pense int n = Keyboard.readInt();

         String ligne = "";
         int i = 1;
         while(i <= n)
         {
            System.out.println(ligne+= i); // "concaténation"
            i++;
         }


Dan
0
C'est plus simple que ce que j'ai fait...je me suis rajouté une ligne inutile.

	System.out.print ("n = ");
	int n = Keyboard.readInt();
	int i = 1;
	String phs = "";
	while(i <= n)
	    {
		System.out.println( phs + i  );
		phs = phs + Integer.toString( i );
		i++;
	    }


Mais bon, je le saurais pour la prochaine fois ;) Merci encore
0