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] Une boucle en string ne fonctionn

[]__________[]
[]__________[]
Niveau 17
02 novembre 2014 à 04:21:12

e pas*

à mon avis j'ai été mal renseigné sur la condition d'un string ?

je débute donc, les commentaires sont obligatoires pour la prof ( pas besoin d'y prêter attention )

C'est la toute première boucle "while (retest!="n") {" qui ne fonctionne pas

Si vous pourriez jeter un oeil :ok:

Fichier .java :

http://puu.sh/czIUF/b524b814c0.java

donc à chaque fois qu'on entre "n" ça recommence tout de même la boucle

Cimer !

Bunyan
Bunyan
Niveau 17
02 novembre 2014 à 05:05:09

Les comparaisons entre objet utilisent la méthode equals.

== ou != font uniquement des tests au niveau de l'instance elle-même, pas de son contenu.

[]__________[]
[]__________[]
Niveau 17
02 novembre 2014 à 06:04:35

juste, c'est sorti de ma tête :-)

cimer

[]__________[]
[]__________[]
Niveau 17
02 novembre 2014 à 07:31:14

en fait ça ne fonctionne pas plus, j'veux ignorer la casse mais il a pas l'air de vouloir coopérer ( jamais utilisé la méthode dans un while, je sais pas si c'est possible ) :

String retest = "o";
String o="o";

while (retest.equalsIgnoreCase(o)) {

System.out.println("O pour continuer, N pour arrêter");

retest=sc.nextLine(); sc.nextLine();

}

ça ne fonctionne pas, obligé d'utiliser une booléenne ?

[]__________[]
[]__________[]
Niveau 17
02 novembre 2014 à 07:31:45

( qu'on entre o ou autre chose, ça passe la boucle )

Trent2
Trent2
Niveau 10
02 novembre 2014 à 13:13:45

si ça passe la boucle, tu peut traduire directement le fait que retest.equalsIgnoreCase(o) est faux, bien que retest = 'o' et o = 'o' (je suppose que tu l'avais compris, mais parfois, le préciser explicitement aide à mieux voir d'où peut venir le problème).

que fait l'option equalsIgnoreCase exactement ? Il est sensé comparer quoi ? Si ça se trouve, il n'est pas capable de comparer des chaines de caractères (enfin, pas comme ça) ?

Après, je ne m'y connais pas en java.

Mais cherche des options ou des fonctions en rapport avec les chaines de caractères. T'en trouveras peut être une plus approprié ?

Tu peut aussi chercher à traduire une chaine de caractère en notation ASCII, et ainsi avoir des nombres comparable comme on a généralement l'habitude (enfin, je suppose qui si une option permet de comparer des chaines de caractères, elle doit le faire directement en fait, ça évite d'écrire 2 lignes ou plus au lieu d'une, et c'est plus facilement compréhensible)

Bunyan
Bunyan
Niveau 17
02 novembre 2014 à 14:08:30

equalsIgnoreCase :

STRING et string -> true
StRiNg et sTrInG -> true
string et tartanpion -> false
string et stringe -> false

Maintenant que je regarde le code : perd l'habitude de mettre les commentaires sur la même ligne que le code. Ca noie la visibilité.

Attention. Ton postulat de départ est faux : une année est bissextile si elle est divisible par 4 ET N'est PAS divisible par 100 OU est divisible par 400.

Indente ton code. Vraiment. Le premier "while" englobe tout le reste. On est censé le voir juste avec l'indentation, pas en tentant de faire correspondre les accolades.

Tu peux écrire directement "while (! "o".equalsIgnoreCase(retest))", tu n'as pas besoin de variable intermédiaire.
Tu n'aurais pas, par hasard, des caractères spéciaux dans ta String ? Genre une espace ou un line feed / retour chariot ? Car ça expliquerait bien pourquoi ça saute.
Vu que je n'ai jamais utilisé la classe Scanner en Java, je ne pourrai pas vraiment plus aider.

[]__________[]
[]__________[]
Niveau 17
02 novembre 2014 à 19:30:00

@Trent : ça sert à comparer 2 string en ignorant la casse

Bun, pour la visibilité du code sous eclipse ça donne mieux ( pour les commentaires ) mais si j'indente ( ctrl+maj+F ) ça me fait foirer mes commentaires sur plusieurs lignes c'est pas beaucoup plus lisible

Pour faire correspondre les accolades je double clique dessus moi

Oui pour le postulat j'ai c/c un peu trop vite, mais j'ai écrit la formule correctement :rire:

Pour le while je pense que ça doit venir de la saisir finale :

System.out.println("O pour continuer, N pour arrêter");
retest=sc.nextLine();
sc.nextLine();

Si j'enlève le second nextline il ne demande même pas à l'utilisateur d'entrer quelque chose il passe directement au début de boucle, ma prof m'a dit qu'il fallait 2 next line avec les string sinon il passait au "mot" suivant, qui ici n'existe pas et donc attendra bêtement

[ARKANIC]
[ARKANIC]
Niveau 17
03 novembre 2014 à 09:50:32

Bon bah en fait j'ai trouvé, fallait simplement inverser les deux nextline :

sc.nextLine();
retest = sc.nextLine();

:pf:

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