Problème exercice débutant java

anoukville -  
anoukville Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je suis débutante sur Java et je cherche la solution pour un petit exercice d'application (pas très compliqué je pense) mais je n'ai pas encore la logique.

enoncé:
Le but de l'exercice est de programmer le parcours d'un escargot qui doit avancer en ligne droite sur un parcours. En fait, il s'agit plutôt d'un pion sur un plateau de jeu que d'un escargot réel : il doit avancer de 50 cases en faisant des déplacements successifs. A chaque tour de jeu, l'escargot avance d'un certain nombre de cases selon le tirage d'un dé. Autrement dit, il peut avancer de 1 à 6 cases par tour. Le jeu s'arrête quand il a parcouru plus de 50 cases.
A chaque tour de boucle, c'est le numéro de la case où est l'escargot qui est affiché.
(instruction MOOC.auSort(1,6) pour générer le tirage au sort)

Je sais qu'il faut utiliser une boucle While mais je n'y arrive pas, ma boucle est sans fin et je ne trouve pas l'erreur.

code:

public class Exercice4 {
  public static void main(String[] args){
    int nombreDe = MOOC.auSort(1,6);
    int position = 0;
    position = position+nombreDe;
    while (position < 50 ) {
      System.out.println("position :");
      System.out.println(position + nombreDe);
  }
}
}


Merci de votre aide!
A voir également:

3 réponses

Nxl Messages postés 1038 Date d'inscription   Statut Membre Dernière intervention   133
 
Salut,
utilises un débogueur, tu trouvera ton erreur parce que si on te donne la solution tu va jamais rien comprendre surtout sur ce genre de notions d'algo super simple...
0
anoukville
 
merci, je ne veux pas la solution toute faite bien sûr mais un indice sur ce qu'il manque ou ce qu'il ne va pas.
0
Regis59 Messages postés 21143 Date d'inscription   Statut Contributeur sécurité Dernière intervention   1 322
 
Décortique nous ton code stp (tu vas comprendre ;-))

Explique chaque ligne:
int nombreDe = MOOC.auSort(1,6);
int position = 0;
position = position+nombreDe;
while (position < 50 ) {
   System.out.println("position :");
   System.out.println(position + nombreDe);

++
Indice: Que donne tes println ?
"Impossible is nothing"
0
anoukville
 
he bien, j'ai créée une variable correspondant au jeté de dé et dont le résultat est du au hasard,
une seconde variable pour la position de l'escargot initialisée 0
j'ai indiqué que la position est égale à la position actuelle + le nombre indiqué sur le dé

j'ai introduit la boucle While avec comme condition "tant que la position est inférieure 50", 50 correspondant à la ligne d'arrivée
j'affiche le mot "position" en face du quel doit apparître le résultat du calcul position + nombreDe

je vois qu'il y a un truc pas logique mais je n'arrive à déterminer quoi. Déjà je pense que la dernière ligne est inutile puisque j'ai déclaré avant que position = position + nombreDe
0
Nxl Messages postés 1038 Date d'inscription   Statut Membre Dernière intervention   133
 
il faudrait peut-être pouvoir sortir du while non ? Quelque chose comme une incrémentation serait pas mal...
0
Regis59 Messages postés 21143 Date d'inscription   Statut Contributeur sécurité Dernière intervention   1 322
 
Oui, tu es en bonne voie.
Tes println t'affichent quels résultats?
(ton while ne fait qu'afficher la... il ne sert pas à grand chose :-/)
0
anoukville
 
le println permet d'afficher le résultat du calcul: position + chiffre affiché par le dé.
0
anoukville
 
Alors, j'ai réussi MAIS, le problème est que le premier jet dé est bien tiré au sort, mais que les tirages suivants sont identiques au premier.

public class Exercice4 {
  public static void main(String[] args){
    int nombreDe = MOOC.auSort(1,6);
    int position = 0;
    while (position < 50 ) {
      System.out.print("position :");
      position = position+nombreDe;
      System.out.println(position);
      
  }
}
}
0
anoukville Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour, je viens de reprendre mon petit jeu avec l'escargot. on vient de voir la notion de tableau. Le nouvel énoncé de l'exercice avec les escargot est : il y a 5 escargots et à chaque tour de boucle, la position de chaque escargot est affichée sous la forme d'un numéro de case (du plateau de jeu, pas du tableau). Chaque escargot est identifié par un numéro, soit un numéro compris entre 0 et 4, soit un numéro compris entre 1 et 5 et à l'affichage, le numéro de l'escargot est précisé avec sa position.

en gros je dois obtenir quelque chose comme ça:
position escargot 0: 2
position escargot 1: 4
position escargot 2: 3
position escargot 3: 1
position escargot 4: 6

(à chaque nouveau tour, la position doit venir s'additionner à la position précédente)
position escargot 0: 8
position escargot 1: 10
position escargot 2: 7
position escargot 3: 9
position escargot 4: 12

mon problème est que sur mon programme, le nombre du dé s'additionne d'un escargot à l'autre.

public class Exercice5V1{
    public static void main(String[] args){
        int[] tab = new int[5];
        int position = 0;
        int nombreDe = 0;
        int num = 0;
        while (position < 50) {
            for (num = 0; num < 5; num = num + 1){
                nombreDe = MOOC.auSort(1, 6);
                tab[num] = position;
                position = position + nombreDe;
                System.out.println("position escargot " + num + " : " + position);
            }
        }
    }
}

un indice ? ;)
merci
0
Regis59 Messages postés 21143 Date d'inscription   Statut Contributeur sécurité Dernière intervention   1 322
 
tab[num] = position;
position = position + nombreDe;

Inverser?
0
anoukville
 
hum non ça ne marche pas non plus ça me cumule les résultats du dé encore mais sans distinguer les escargots

public class Exercice5V1{
    public static void main(String[] args){
        int[] tab = new int[5];
        int position = 0;
        int nombreDe = 0;
        int num = 0;
        while (position < 50) {
            for (num = 0; num < 5; num = num + 1){
                nombreDe = MOOC.auSort(1, 6);
                position = position + nombreDe;
                tab[num] = position;
                System.out.println("position escargot " + num + " : " + tab[num]);
            }
            System.out.println(" ");   
        }
    }
}
0
Regis59 Messages postés 21143 Date d'inscription   Statut Contributeur sécurité Dernière intervention   1 322
 
num = num + 1 => num++
0
Gismo0612 > anoukville
 
T'as déclaration System.out.println("Position escargot " + num + " : " + tab[num]); est bonne.
Regarde pas rapport à l'exercice précédent comme avais tu déclaré tes variables mais surtout ton calcul
0
Regis59 Messages postés 21143 Date d'inscription   Statut Contributeur sécurité Dernière intervention   1 322
 
Au fait, quand tu es dans ce cas la, il est intéressant de vérifier tes valeurs à chaque tour de boucle:
si tab[num] == toujours la même valeur, c'est que l'incrémentation ne se fait pas par exemple...

tu vois?
0