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] Erreur qui m'échappe !

HareeBoo
HareeBoo
Niveau 6
11 février 2014 à 21:28:31

Bonsoir ! J'ai obtenu une erreur que je ne comprends pas dans mon programme ! Voici en gros ce qu'il contient (je vous passe toute la partie qui fonctionne, c'est à dire tout ce qui est lié à Scanner, aux entrés claviers de l'user...mon souci est un souci de type de variable selon Eclipse) :

--------------------------------

int a;
int b;

if (a==b);
out.print("Bien tombé");
if (a!=b);
out.print("Dommage Bro");
if (2<=a<=4);
out.print("Intervalle gagnant, Swag !");
if (5<=b<=7);
out.print ("Intervalle maudit, fail");

------------------------------------

Là ou ça déconne, c'est au niveau des opérateurs. Eclipse m'indique que "inférieur ou égal" n'est pas compatible avec les int, juste les boleans (de ce que j'ai saisit) mais pourquoi ? Je ne comprends pas du tout la logique de l'erreur, pourquoi l'instruction renvoie un bolean au lieu de situer la valeur de la variable dans l'intervalle associé ?

Vous vous doutez bien que si je ne sais pas d'ou vient l'erreur je peux encore moins la corriger ! Merci de m'éclairer (et oui je débute, il y a surement un autre moyen que de mettre des "if" partout mais c'est volontaire, l'algorithme doit être apparent)

saifai
saifai
Niveau 10
11 février 2014 à 21:32:14

if (2<=a<=4);
if (5<=b<=7);

C'est pas plutôt :
if (a >=2 AND a<=7)
out.print("Intervalle gagnant, Swag !");
if (b>=5 AND b<=7);
out.print ("Intervalle maudit, fail");

lokilok
lokilok
Niveau 16
11 février 2014 à 22:15:14

Si, parce que la a<=4 renverra un booléen, et ce booléen sera comparé avec l'opérateur <= avec 2, ce qui n'a pas de sens.

Ou alors c'est l'inverse, je sais pas si la priorité est de gauche à droite ou de droite à gauche.

HareeBoo
HareeBoo
Niveau 6
11 février 2014 à 22:29:50

Wow, donc "a >=2 AND a<=7" a le même sens que "2 est inférieur ou égal à A qui lui, est inférieur ou égal à 7" n'est ce pas ? Et Salfai, que veux tu dire par "AND" ? (Eclipse ne reconnait pas la syntaxe)

lokilok
lokilok
Niveau 16
11 février 2014 à 22:32:58

And c'est et c'est tout, soit &&.

Et ça veut dire "si a est supérieur ou égal à 2 et si a est inférieure ou égal à 7.

Bunyan
Bunyan
Niveau 17
11 février 2014 à 23:03:59

Cours sur les opérateurs : il y a deux types d'opérateur, les opérateurs unaires et les opérateurs binaires.

Les opérateurs unaire ne prennent en argument qu'une seule opérande. Prenons -1 par exemple. Dans ce cas, l'opérateur - est unaire, n'ayant qu'une opérande.

Les opérateurs binaire, quant à eux, utilisent deux opérandes. Prenons "5 - 3". Ici, l'opérateur - est binaire. Il a comme opérande 5 et 3.

+ et - sont des opérateurs pouvant être unaires ou binaires, dépendant du contexte.
Les autres opérateurs sont binaires.
Les opérateurs de comparaison (>; <; >=; <=; ==; !=) sont binaires.

Dans ton cas "2<=a<=4", tu utilises deux opérateurs binaires à la suite. De mémoire, l'ordre des opérations n'est pas défini (il faudrait lire les spec' du compilateur pour ça).
En somme, puisque les opérateurs sont binaires, la première opération effectuée sera, par exemple, "2 <= a", qui renvoi un booléen.
Ensuite vient la suite de l'instruction, soit "boolean <= 4", d'où l'erreur.
Les opérations sont résolues comme elles le doivent. Pour t'aider à te représenter la chose, "2 <= a <= 4" pourrait s'écrire "(2 <= a) <= 4" (ou "2 <= (a <= 4)", dépend) pour illustrer un ordre de priorité. Avec cette représentation, il est plus facile de comprendre qu'il y a un problème.

Ainsi, pour vouloir tester si une valeur est comprise entre d'autres, il faut tester cas par cas en liant avec l'opérateur logique ET.
Donc, pour savoir si a est compris entre 2 et 4, il faut faire "2 <= a && a <= 4". Algèbre de Boole, comparaison de booléen, table de vérités, tout ça...
Dans le cas où a est un entier, on peut aussi simplement écrire "a == 3", puisqu'aucune autre valeur n'existe dans cet ensemble entre 2 et 4.

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