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

Résultat bizarre Java

Sachiel3
Sachiel3
Niveau 10
01 décembre 2014 à 16:14:57

Salut, le programme est tout con, il additionne des variables et donne le résultat seulement quand je met 2+3 par exemple, il va me sortir 101 ou 15+28=99

Voici le programme:

int vNb1=0;
int vNb2=0;
int vRes=0;

System.out.println("Entrez un premier nombre");
vNb1=Clavier.lire_Char();

System.out.println("Entrez un deuxieme nombre");
vNb2=Clavier.lire_Char();

vRes=vNb1+vNb2;
System.out.println(vRes);

Quelqu'un à une idée d'ou ca vient ? Clavier.lire est une fonction donné par notre prof qui entre les saisies de l'utilisateur. Je n'ais jamais eu de problème avec donc je ne pense pas que ca vienne de là.

SwordQuardo
SwordQuardo
Niveau 5
01 décembre 2014 à 16:39:34

C'est le code ascii que tu lis, fais plutôt:
vNb1=Clavier.lire_Char()-'0';
Cela devrait marcher

Sachiel3
Sachiel3
Niveau 10
01 décembre 2014 à 20:41:23

Effectivment ca marche comme ca, merci.
Par contre je ne comprends pas, ca marchait très bien en cour sans rajouter ce " -'0' ", comment cela se fait que personnellement je suis obligé d'utiliser cette synthaxe sur mon ordi ?

Tharsis
Tharsis
Niveau 10
01 décembre 2014 à 21:09:06

T'es sûr que tu utilisais la même chose en cours ? Parce qu'apparemment tu veux lire un nombre avec une méthode censée prendre un char/caractère en paramètre...

aceshelf
aceshelf
Niveau 4
02 décembre 2014 à 17:21:07

Si tu lis au clavier, vaut mieu utiliser :
vNb1 = scanner.nextInt();

Vu que tu additionnes des int :)

Tharsis
Tharsis
Niveau 10
02 décembre 2014 à 17:39:26

Scanner qu'il faudrait d'abord déclarer et initialiser non ? Enfin apparemment la fonction qu'il utilise était fournie par son prof donc pas pour décorer, il était censé l'utiliser. :noel:

Sachiel3
Sachiel3
Niveau 10
04 décembre 2014 à 17:13:35

Oui j'utilisais la même chose en cour vu que j'ai pris le fichier clavie.lire du lycée qui marchait très bien.

Et oui je suis obligé de l'utiliser vu que le prof nous apprit comme ca, je vais pas me rebeller contre lui :hap:

Tikim
Tikim
Niveau 21
04 décembre 2014 à 17:48:25

LireChar te renvoie un caractère ascii, un symbole en gros. On un symbole correspond à un nombre (regarde table ascii sur Google), et le symbole '0' correspond je crois à 0x30 soit 42 (sauf erreur hein). Ça signifie que si tu as le caractère '6', concrètement il a la valeur 42+6 donc 48. Il faut donc soustraire à la valeur le nombre 42, indice du zéro.

Pour ça tu peux faire "-42" après l'acquisition, ou comme proposé au dessus "- '0'", c'est équivalent.

Le plus intelligent serait d'utiliser une fonction qui récupère un nombre, genre lireInt(). Déjà parce que tu aurais direct la bonne valeur, et surtout parce qu'en lisant un char tu peux pas additionner des nombres supérieurs à 9 puisqu'ils font plus d'un caractère. Sauf bien sûr en lisant un nombre jusqu'au retour à la ligne et en multipliant chaque partie par le bon multiple de 10 puis en sommant le tout, mais quelque chose me dit que tu as pas le niveau.

Tikim
Tikim
Niveau 21
04 décembre 2014 à 17:53:57

48 pour '0' pas 42 après vérification. Tout le reste est pareil.

La ton programme prend le premier char (1,premier caractère de "15") donc le nombre 48+1, et 2, premier char de" 28" donc 2+48.

48+1+48+2 = 99

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