Problème exercice débutant java

Fermé
anoukville - Modifié par KX le 26/03/2016 à 10:50
anoukville Messages postés 8 Date d'inscription dimanche 20 mars 2016 Statut Membre Dernière intervention 23 février 2017 - 2 avril 2016 à 19:01
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 mardi 2 février 2010 Statut Membre Dernière intervention 5 janvier 2017 133
25 mars 2016 à 23:13
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
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 mardi 27 juin 2006 Statut Contributeur sécurité Dernière intervention 22 juin 2016 1 320
Modifié par KX le 2/04/2016 à 18:36
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
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 mardi 2 février 2010 Statut Membre Dernière intervention 5 janvier 2017 133
26 mars 2016 à 00:03
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 mardi 27 juin 2006 Statut Contributeur sécurité Dernière intervention 22 juin 2016 1 320
Modifié par Regis59 le 26/03/2016 à 00:17
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
le println permet d'afficher le résultat du calcul: position + chiffre affiché par le dé.
0
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 dimanche 20 mars 2016 Statut Membre Dernière intervention 23 février 2017
Modifié par KX le 2/04/2016 à 18:42
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 mardi 27 juin 2006 Statut Contributeur sécurité Dernière intervention 22 juin 2016 1 320
1 avril 2016 à 19:45
tab[num] = position;
position = position + nombreDe;

Inverser?
0
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 mardi 27 juin 2006 Statut Contributeur sécurité Dernière intervention 22 juin 2016 1 320
2 avril 2016 à 08:24
num = num + 1 => num++
0
Gismo0612 > anoukville
2 avril 2016 à 12:28
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 mardi 27 juin 2006 Statut Contributeur sécurité Dernière intervention 22 juin 2016 1 320
2 avril 2016 à 13:49
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