CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java] Ma boucle ne n’obéit pas '-'

TommyVercittee
TommyVercittee
Niveau 10
26 octobre 2014 à 23:14:17

Bonsoir, je sèche sur une boucle :pf:

Mon programme permet à l'utilisateur d'entrer autant de valeurs qu'il souhaite tant qu'il n'entre pas le mot END.
Donc la chose se présente comme ceci, avec un do-whhile :

------

do { ma boucle avec une variable nommée var de type String est initialisée via la classe Scanner. donc var = sc.nextLine()...

}...tant que (var n'équivaut pas "END")

Afficher message : Fin du programme !

-----

Voilà grosso modo je pense que c'est clair. Je pensais que ça fonctionnait, lorsque je le lance, je peux entrer autant de valeurs que je le souhaite. Sauf que lorsque j'entre END, au lieu de m'afficher le message final puis basta, bah on me demande une autre valeur. Okay.

J'ai du mal à comprendre pourquoi. TANT QUE VAR est différente de END on continue ! Si elle est égale tout est censé stopper pourtant, non ?

Drattak
Drattak
Niveau 10
26 octobre 2014 à 23:26:18

Alors je pense que dans ta comparaison, tu as fait (var=="END") ce qui vérifie si les objets sont les mêmes. En l'occurrence même s'ils ont la même valeur, ce sont deux objets distincts. Pour vérifier si le contenu de la chaîne est identique à celui d'une autre, il y a une méthode var.equals("END") qui devrait mieux fonctionner. :-)

TommyVercittee
TommyVercittee
Niveau 10
26 octobre 2014 à 23:38:22

J'aurai du le préciser mais, oui, j'ai bel et bien utiliser la méthode equals() donc le soucis ne provient pas de là :-(
Non franchement d'un point de vu algorithmique je vois pas ou ça foire :doute:

TommyVercittee
TommyVercittee
Niveau 10
26 octobre 2014 à 23:44:47

Bon bah j'ai ajouté une condition dans ma boucle "Si var équivaut à END alors..." et ça fonctionne, je vais pouvoir embrayer sur la suite dans cette condition. Mais c'est curieux :pf:

Bunyan
Bunyan
Niveau 17
26 octobre 2014 à 23:50:45

T'sais, sans voir ton code, c'est pas franchement facile de te dire pourquoi tu as un comportement dans un langage :)
Mets ton code sur pastebin, et l'on pourra te dire.

TommyVercittee
TommyVercittee
Niveau 10
27 octobre 2014 à 22:54:43

A mon avis c'est juste parce que j'oublie de faire quelque chose de basique, un truc simple. Oubliez cette histoire de String, le soucis c'est moi ! Donc je vais prendre plus simple.

Disons une division. Je fais une division. Je met en place un while. Tant que le résultat est supérieur ou égale à 1, on le divise encore par le nombre et on affiche le résultat.

----

int d = sc.nextInt();

int div = d/4;

while (div >= 1){
div = div/4;
System.out.println("On a : "+div);
}

----

Je m'attends à ce que ma boucle m'affiche tous les résultats. Mais non, pour d = 16 par exemple il m'affiche 1 et 0. Je ne sais même pas d'ou ça sort.

Pourtant l'algo c'est bien "tant que c'est supérieur à égale à 0 tu le divise encore et tu m'affiches le résultat" non ?

LeuNoeleeste
LeuNoeleeste
Niveau 10
27 octobre 2014 à 22:59:01

Le 1 sort de 4/4 en fait et le 0 de 1/4, tu es en int, tout ce qu'il y a suite à la virgule dégage. Tu te compliques la vie avec une variable inutile, d suffit :

:cd:

Scanner sc = new Scanner(System.in);

double d = sc.nextInt();

while (d >= 1){
d = d/4;
System.out.println("On a donc : "+d);
}

:cd:

Là c'est bon :ok:

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment