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 fonction while et equals ?

EnfantDuSoleil
EnfantDuSoleil
Niveau 5
11 novembre 2015 à 23:18:26

Salut à tous !
J'ai besoin d'une petite aide, j'ai un exo que je ne comprends pas enfin une fonction plutot.
while( !s.equals ("fin") && !s.equals("FIN"))

Cela veux dire tant que s ne vaux pas fin ou alors tant que s n'a pas comme chaine de caractère fin ou FIN?
On aurait pas pu mettre while( s != fin) ?

shinigota
shinigota
Niveau 10
11 novembre 2015 à 23:46:59

La condition signifie :
Tant que s est différent de "fin" et s est différent de "FIN"

Mais attention, tu as dis "ou", et c'est complètement différent :oui:

Par exemple si j'écris "FIN", c'est différent de "fin", donc la première condition est vérifiée, mais ce n'est pas différent de "FIN", donc la deuxième condition n'est pas vérifiée, au final la condition entière est fausse puisqu'on a un and entre les deux première conditions (qui sont vrai ET faux) qui vaut faux, donc on sort du while :oui:

Alors que si on a un or, et qu'on a s qui vaut "FIN", ça donnerait "vrai ou faux," puisque "FIN" est différent de "fin" (vrai) mais pas de "FIN" (faux), et" vrai ou faux" donne faux :(

On aurait pas pu mettre while( s != fin) ?

Justement non, on veut vérifier que s est différent de fin et de FIN.
s étant très probablement un string dans ton exemple, il peut tout à fait valloir "fin" ou "FIN", et les majuscules font que la valeur est complètement différente :oui:

Ensuite, on utilise les opérateur == et != sur les types primitifs (int, double, char, toussa), sur les objets (String et tout ce que tu veux), on utilise alors objet1.equals(objet2); et !objet1.equals(objet2);.
Comparer deux objets c'est bien plus compliqué que comparer deux variables avec des types primitif.

Utiliser == et =! avec un String il me semble que ça fonctionne (j'en suis pas sur, je suis tellement habitué à utiliser equals... :hap:), mais c'est pas le cas pour tous les objets et donc c'est une mauvaise habitude à prendre :oui:

EnfantDuSoleil
EnfantDuSoleil
Niveau 5
12 novembre 2015 à 00:08:05

MERCIII !

Et j'ai une autre petite question si tu pourrais y répondre ce serait top ! Pour un programme dont le but et d'inverser une chaine de caractère passée en paramètre.

static void inverser (String s) {
i= s.length() -1
while (i >= 0) {
output.print(s.charAt(i));
i--;
}
}
Je ne comprends pas on met (-1) sur i :question:

qcslaughter
qcslaughter
Niveau 12
12 novembre 2015 à 00:10:39

si je dit pas de bêtise c'est car tu va cherche la longueur du string (qui commence a zéro) donc on doit mettre le - 1..

EnfantDuSoleil
EnfantDuSoleil
Niveau 5
12 novembre 2015 à 00:49:26

Oh merci pour ces réponses :cute: !
Je débute en programmation. Du coup j'aurai une derniere petite question si vous avez le temps :fier:
Pour faire un programme qui affiche les n premiers entiers de manière croissante puis décroissante avec n passé en paramètre

Exemple si n vaut 10 ca affichera :

Boucle croissante : 0 1 2 3 4 5 6 7 8 9
Boucle décroissante : 9 8 7 6 5 4 3 2 1 0

Est ce que ce code est bon ?

static void Prog (int n) {
p=0;
output.print("Boucle croissante : ");
while( p<n) {
         output.print(p +" ");
         p++;
}
Boucle décroissante
while(p=n){ //p vaudra forcément n je suppose, à cause du while d'au dessus (p++)
         output.print(p +" ");
         p--;
}
}
Message édité le 12 novembre 2015 à 00:51:45 par EnfantDuSoleil
EnfantDuSoleil
EnfantDuSoleil
Niveau 5
12 novembre 2015 à 01:17:00

D'accord :) Je vais essayer de bosser les pour. Mais je comprends pas pourquoi t'as mis int i = n-1 ^^

shinigota
shinigota
Niveau 10
12 novembre 2015 à 14:20:13

Attention à ta boucle décroissante :
while(p=n)
Déjà la boucle ne remplit pas son rôle.
Ensuite, j'ai bien compris que tu voulais vérifier l'égalité entre p et n, mais dans ce cas on fait p == n, pas p = n qui affecte la valeur de n à p :oui:

Et donc comme je disais, ton deuxième while ne fait pas ce qui est demandé.
Effectivement quand t'arrives à ce while, p a la même valeur que n, mais ensuite tu vas afficher p, le décrémenter une fois, et là p n'aura plus la valeur de n, la condition ne sera plus vérifiée et tu vas quitter la boucle après être passé seulement une fois dedans.

Comme l'a dit troll-, pour ce genre de choses on utilise une boucle "pour" (for) avec un pas, c'est bien plus lisible :oui:
Une boucle for fonctionne de cette manière :
for(initialisation variable; condition variable: incrémentation)
Et en l’occurrence pour faire la boucle décroissante, tu pour n = 10 tu veux faire 9 8 7 ... donc tu démarre bien à n-1 comme troll l'a dit :oui:

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