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

Convertisseur Java,niveau debutant

Darkelyan
Darkelyan
Niveau 10
26 octobre 2012 à 02:13:31

Bonjour,je suis en train d'apprendre le java en autodidacte avec le site du zero,la je suis a la partie ou je dois faire un tp

Voila le code :d)

import java.util.Scanner;

class Calculateur {
public static void main(String[] args) {

int mode=' ';
System.out.println("CONVERTISSEUR DEGRES CELSIUS ET FARHEINEIT");
System.out.println("-----------------------------
-------------");

//Boucle principale
do {

// Boucle 2
do {
mode = ' ';
System.out.println("Veuillez choisir votre mode");
System.out.println("1-Convertisseur Celsius-Farheineit");
System.out.println("2-Convertisseur Farheineit-Celsius");
Scanner choix = new Scanner(System.in);
mode = choix.nextInt();

if (mode != '1' && mode != '2');
choix.nextLine();
System.out.println("Mode inconnu, veuillez réitérer votre choix.");
}while (mode != '1' && mode != '2');//Boucle 2

}while(mode != '1' || mode != '2');//Boucle principale

if(mode == '1')
System.out.println("Vous avez choisis le mode 1");

if(mode == '2')
System.out.println("Vous avez choisis le mode 2");

}
}

:d) En fait voila le principe c'est de forcer l'entrée a etre soit 1 soit 2 sinon la boucle recommence.Cependant la boucle marche,mais les conditions requise pour la stopper,la stoppe pas,j'arrive pas a comprendre pourquoi,vu que j'ai fais en sorte que la boucle ne fonctionne que lorsque mode n'est ni egal a 1 ou 2.Sinon si ça fais 1 ou 2 ca affiche ce choix,sauf que la boucle continue et ne prends pas en compte si le choix est correctement 1 ou 2.

Explications svp :) J'ai besoin d'une explication claire par rapport a ce code,qu'est ce qu'il fais qu'il ne fonctionne pas,et rajouter quelque chose pour le faire marcher dans CE code,pas completement changer la façon de faire,si c'est possible bien sur :)

merci d'avance

Chocolayte
Chocolayte
Niveau 73
26 octobre 2012 à 06:56:00

" c'est de forcer l'entrée a etre soit 1 soit 2 "
" if (mode != '1' && mode != '2'); "

Faut mettre un || , pas un &&

Chocolayte
Chocolayte
Niveau 73
26 octobre 2012 à 06:58:15

Ah non, j'ai lu un " if (mode == '1' && mode == '2'); " désolé. Le matin. :noel: :jsaispasducoup:

Chocolayte
Chocolayte
Niveau 73
26 octobre 2012 à 07:00:11

SI c'est la même syntaxe qu'en C, t'as pas mis d’accolades autours de ta fonction if. A partir du moment où t'as deux lignes d'instructions ou plus à ton if, t'en as besoin.

winniebaby
winniebaby
Niveau 8
26 octobre 2012 à 08:51:29

3 post a la suite, merci d'utiliser la fonction editer :ok:

Bunyan
Bunyan
Niveau 17
26 octobre 2012 à 09:35:21

Nouveau sur JV.com ? Il n'y a pas de fonction "éditer" sur ce site, malgré la très forte demande.

@DarkElyan : Tu as 2 soucis.
Le premier : la création de ton Scanner ne doit pas être dans la boucle, mais en dehors. En créer plusieurs peut amener à un état incohérent et donc source d'erreurs chiantes à corriger.
Le second : Ce code compile bien ? Tu n'as aucun message à la compilation outre celui "tout va bien" ? (je n'ai pas de compilo sous la main).
Si ça compile bien, je te suggère de t'intéresser à ton compilateur et lui signifier de montrer tout les warning, erreurs ... qu'il peut.
Tu as un souci au niveau de ta variable "mode". Tu la déclares en 'int', et l'initialise avec une valeur de '', donc un char. Je te suggères de n'utiliser que des entiers dans cette variable, et ton problème devrait se résorber.

Je n'ai jamais eu besoin d'utiliser le type char en Java, mais le plus logique est que, à la ligne :
if (mode != '1' && mode != '2');
Java compare la valeur entière entrée par l'utilisateur (donc 1 ou 2 dans le cas d'une saisie valide) à la valeur ASCII des caractères 1 et 2 (donc 61 et 62).

Bunyan
Bunyan
Niveau 17
26 octobre 2012 à 09:39:27

J'ai oublié aussi.
Quand tu as un code à soumettre, merci de le mettre sur un site type http://pastebin.com et de fournir le lien. C'est plus facile pour les personnes te répondant (vu que sur JV.com, il n'y a pas non plus de balise citation, code ...).

Tu as des soucis au niveau des "if" aussi.
Dans ce code, le "if" est mort. Le ; à la fin enlève toute son utilité.
if (mode != '1' && mode != '2');
choix.nextLine();
System.out.println("Mode inconnu, veuillez réitérer votre choix.");

Darkelyan
Darkelyan
Niveau 10
26 octobre 2012 à 10:33:08

merci, alors j'ai fais ce que tu m'as dis.

-Premièrement j'ai enlevé le Scanner de la boucle et je l'ai mis avec la declaration de variable
-j'ai supprimé le ";" apres mon if
-j'ai changé les valeur de char en int

http://pastebin.com/xLi2WrHv

voila par contre ça marche toujurs pas,la boucle se lance,mais que pour l'erreur,meme lorsque le resultat est 1 ou 2 la boucle continue de se lancer en indiquant l'erreur

Darkelyan
Darkelyan
Niveau 10
26 octobre 2012 à 10:36:17

(merde j'ai pas selectionné tout,il manque deux accolade a la fin mais c'est pas important,je dis juste ça pour que tu me le fasses pas remarquer)

Bunyan
Bunyan
Niveau 17
26 octobre 2012 à 11:19:07

Ce que tu nommes "boucle principal" est inutile.

Tu fais ceci :
FAIRE
...FAIRE
...
...TANT QUE (mode != 1) ET (mode != 2)
TANT QUE (mode != 1) OU (mode != 2)

Le second test d'ailleurs est toujours vrai.
Supprime ta boucle principale donc.

Tu as aussi un souci au niveau d'un de tes if, mais je te laisse chercher.

Darkelyan
Darkelyan
Niveau 10
26 octobre 2012 à 11:53:32

ok donc j'ai supprimé la boucle principale et j'ai remplacé la valeur du mode dans mon premier if qui etait != 0)

http://pastebin.com/DaCfNYxU

Sauf que maintenant ca m'affiche ça par exemple

:d) Veuillez choisir votre mode
1-Convertisseur Celsius-Farheineit
2-Convertisseur Farheineit-Celsius
1
Mode inconnu, veuillez réitérer votre choix.
Vous avez choisis le mode 1

En gros la ligne System.out.println("Mode inconnu, veuillez réitérer votre choix.");

s'affiche a chaque fois même lorsque l'entrée a ete prise en compte,j'ai pourtant la condition précisé avec le while que la boucle s'execute lorsque mode n'est ni egal a 1 ni egal a 2.

Coffres
Coffres
Niveau 5
26 octobre 2012 à 12:07:13

"if (mode != 1 || mode != 2)"

Dans ce cas si mode est différent de 1 la condition s’exécute ou si mode est différent de 2.

Donc en gros la condition s’exécutera tout le temps.

Bunyan
Bunyan
Niveau 17
26 octobre 2012 à 12:54:54

Pour le souci de la ligne qui s'affiche à chaque fois, voir le 3ème message de Chocolayte.

Darkelyan
Darkelyan
Niveau 10
26 octobre 2012 à 21:35:27

Bon c'est en train de me rendre fou

Coffres,cette ligne c'est pour dire si mode n'est pas egal a 1 ou mode n'est pas égal a 2,la boucle s'execute.
Pour que vous comprenez un peu comment je compte coder mon programme j'ai fais ça sur word

Variable choix= sans valeur

BOUCLE 1 a executer minimum une fois{
Renseignement du mode selectionné
Lancement du choix
Saisie
Stockage}

-CONDITION 1>
Si stockage est different de 1 ou 2 >
Execution> Afficher message d'erreur
et recommencer procédure de stockage

-CONDITION 2

Si stockage est égal a 1 ou 2
Execution >Valider le choix soit 1 soit 2

si le choix est 1 stopper la boucle et afficher le choix du mode 1
Si le choix est 2 stopper la boucle et afficher le choix du mode 2

En fait j'arrive a faire marcher le code maintenant,le seul problème que j'ai c'est le message d'erreur qui s'affiche quand il dois pas s'afficher genre ça me fais "veuillez reesayer vous avez choisi le mode 1" -_- et s'affiche pas quand il dois

Coffres
Coffres
Niveau 5
26 octobre 2012 à 21:51:59

"Coffres,cette ligne c'est pour dire si mode n'est pas egal a 1 ou mode n'est pas égal a 2,la boucle s'execute. "

Je sais, et vu qu'une variablement ne peux pas être égal à deux nombre, cette condition sera toujours vrai.

Darkelyan
Darkelyan
Niveau 10
26 octobre 2012 à 22:48:15

elle dois pas être égale a deux nombres,C'est deux conditions differentes,c'est si SOIT elle fais ne pas 1 si SOIT elle ne fais 2.

Darkelyan
Darkelyan
Niveau 10
26 octobre 2012 à 22:50:15
  • c'est si SOIT elle ne fais pas 1 si SOIT elle ne fais pas 2
Coffres
Coffres
Niveau 5
26 octobre 2012 à 23:24:08

Tu sais que || veut dire "ou" ?

Coffres
Coffres
Niveau 5
26 octobre 2012 à 23:26:59

Ah oui désolé j'avais mal lu.

Donc j'ai vais mieux t'expliquer, imagine si mode est égal a un, le mode != 1 sera faux, mais le mode != 2 sera vrai, donc au final la condition sera vrai.

Si mode est égal à deux, mode != 1 sera vrai et mode != 2 sera faux, donc la condition sera vrai.

Et pour finir, si mode est égal à autre chose que 1 et 2 (disons 3) mode != 1 sera vrai, mode != 2 sera vrai, donc la condition sera vrai.

Tu vois ce que je veux dire ?

Darkelyan
Darkelyan
Niveau 10
27 octobre 2012 à 01:11:58

Euh non pas trop,mais je pense que tu te trompes,vu que même sur le site il fais comme ça ^^' a moins que je t'ai mal compris.

Sinon j'ai enfin réussi a faire marcher comme je veux le code,En fait la solution etait de créer une boucle du programme principal en ajoutant une variable determinant si le programme continue a faire tourner la boucle.

http://pastebin.com/A7QxPVRn

Voila cependant il reste un petit defaut,tout marche,ca recommence si c'est pas 1 ou 2,ca stoppe si c'est 1 ou 2 et ça affiche le choix,le seul hic c'est que par exemple

Veuillez choisir un mode
1- Mode Celsius Farheineit
2 -Mode Celsius Farheineit
1
Vous avez choisi le mode 1
Vous avez choisi le mode 1

:d) en gros ça affiche deux fois au lieu d'une la phrase "vous avez choisi le mode x" est ce que c'est lié au fait que le "do" s'effectue minimum une fois?est ce que c'est un autre problème?et comment changer ça?

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