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, comparer des int comprend rien !!

Oleee
Oleee
Niveau 41
04 décembre 2014 à 23:35:30

static String isEquilateral(int e1, int e2, int e3) {

String str="";

if((e1>0) && (e2>0) && (e3>0) && (e1==e2==e3))
{ str= "Equilateral"; }
return str;

}

J'ai crée cette méthode pour tester les cotés d'un triangle et voir si il est équilateral. Sauf que dans la ligne du if, on me dit "incomparable types: boleean and int" alors que je ne vois pas ce qu'il y a de faux la dedans !!

HanataMuchika
HanataMuchika
Niveau 4
04 décembre 2014 à 23:43:52

C'est ton e1==e2==e3 qui est faux, tu ne peux pas enchainer deux opérations de comparaison à la suite.
e1==e2 renvoie un booleen qu'il compare avec e3 qui est un entier, ton erreur est cohérente.

Tu devras faire (e1==e2)&&(e2==e3)

shinigota
shinigota
Niveau 10
04 décembre 2014 à 23:45:34

"(e1==e2==e3)"

Il faut faire (e1 == e2) && (e1 == 3) :ok:

Dans une expression booléenne, tu peux tout à fait faire "truc et truc et truc", ou "truc ou truc ou truc", enfin combiner plus 2 de variables logiques en une expression.
Avec les autres opérateurs, tu peux pas, il faut comparer 2 par 2 :oui:

Ace_Attorney
Ace_Attorney
Niveau 10
04 décembre 2014 à 23:45:46

Il faut comprendre ça d'un point de vue compilateur.

Quand ton programme traitera cette expression.
if(e1==e2==e3)

La réelle expression ne sera pas e1 == e2 == e3, mais plutôt de ce style.

(e3 == (e2 == e1))
(ou un truc du style)

Donc il va traiter e2 == e1, qui va retourner un boolean.
Le problème de compilation va ce poser dès maintenant, en effet, si on pense ça d'un point de vue compilo, tu fais une opération entre un integer et un boolean.

Par exemple, pour e1 = 0, e2 = 1, e3 = 2.

e1 == e2 == e3
(e3 == (e2 == e1))
(2 == (1 == 0))
(2 == false) // problème de compilation

Oleee
Oleee
Niveau 41
05 décembre 2014 à 14:01:41

Merci les gars, j'avais corrigé, en effet le problème venait de la triple comparaison :hap:

JustinienPibrac
JustinienPibrac
Niveau 10
05 décembre 2014 à 19:13:07

Accessoirement, puisqu'il faut que les 3 soient égaux, ça sert à rien de vérifier que les 3 soient positifs, une seule vérif suffit :hap:

if(e1>0 && e1 == e2 && e1 == e3)

Oleee
Oleee
Niveau 41
05 décembre 2014 à 21:48:21

Oui t'as raison, je me perd dans les comparaisons a chaque fois et je fais des trucs en plus qui servent a rien, je crois pas que c'est pénalisé :(

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