IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Problème avec l'objet Scanner


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 78
    Par défaut Problème avec l'objet Scanner
    Bonjour,

    J'essaye de faire un convertisseur degré Celsius en Fahrenheit. Je rencontre un problème avec l'utilisation de scanner, je n'arrive pas a résoudre mon problème.

    Voici mon main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    package Convertisseur;
     
    import java.util.Scanner;
    import Convertisseur.conver_cels_to_fahr;
     
    public class Convertisseur {
     
    	public static void main(String[] args) {
     
    		Scanner sc = new Scanner(System.in);
    		int mode = 0;
     
    		System.out.println("CONVERTISSEUR DEGRES CELSIUS ET DEGRES FAHRENHEIT");
     
     
    		do{
    			System.out.println("Veuillez saisir voitre mode de conversion:");
    			System.out.println("1 - Convertisseur Celsius - Fahrenheit");
    			System.out.println("2 - Convertisseur Fahrenheit - Celsius");
    			mode = sc.nextInt();
     
    			switch(mode) {
    			  case 1:
    			    System.out.println("Vous avez sélectionné : Convertisseur Celsius - Fahrenheit");
    			    conver_cels_to_fahr.cels_to_fahr();
    			    break;
    			  case 2:
    			    System.out.println("Vous avez sélectionné : Convertisseur Fahrenheit - Celsius");
    			    //conver_fahr_to_cels();
    			    break;
    			  default:
    			    System.out.println("*** Choix du mode incorrect, veuillez réitérer votre choix ***\n");
    			}
    		}while(mode != '1' && mode != '2');
    	}
    }
    A la ligne 10 j'ai un warning me disant que 'sc' n'est jamais fermé ? je comprend pas bien pourquoi.


    Et voici ma classe qui contient ma méthode pour passer des degré Celsius au fahrenheit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    package Convertisseur;
     
    import java.util.Scanner;
     
    public class conver_cels_to_fahr {
     
    	private static final int FORMULE_CONST_1 = 9/5;
    	private static final int FORMULE_CONST_2 = 32;
     
    	public static int cels_to_fahr() {
     
    		Scanner sc = new Scanner("System.in");
    		int conversion = 0;
    		int degre = 0;
     
    		System.out.println("Saisissez la température en degré Celsius :" );
    		degre = sc.nextInt();
     
    		System.out.println("Température rentrée = "+degre+ "°C");
    		conversion = FORMULE_CONST_1*degre + FORMULE_CONST_2;//FORMULE CONVERSION
    		System.out.println("Température après conversion = " +conversion+" °F");
     
    		return conversion;
     
    	}
     
    }
    Ici aussi à la ligne 12 j'ai un warning m'expliquant que mon 'sc' n'est jamais fermé :/


    Et enfin l'erreur que me sort la console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Exception in thread "main" java.util.InputMismatchException
    	at java.util.Scanner.throwFor(Unknown Source)
    	at java.util.Scanner.next(Unknown Source)
    	at java.util.Scanner.nextInt(Unknown Source)
    	at java.util.Scanner.nextInt(Unknown Source)
    	at Convertisseur.conver_cels_to_fahr.cels_to_fahr(conver_cels_to_fahr.java:17)
    	at Convertisseur.Convertisseur.main(Convertisseur.java:29)

    Merci pour votre aide je suis un peu bloqué

  2. #2
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Bonjour,

    Vue les formules de calcul tu as peu de chances que la méthode cels_to_fahr(){} puisse te retourner un Integer. Essaie de changer au moins le type de la variable "conversion" en Float ou Double.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Jarell Voir le message
    A la ligne 10 j'ai un warning me disant que 'sc' n'est jamais fermé ? je comprend pas bien pourquoi.
    Ben parce qu'il n'est jamais fermé et qu'on doit toujours fermer les ressources qu'on ouvre.

    En l'occurrence, vu que la ressource est basée sur System.in, c'est pas toi qui l'a ouverte et tu n'as pas vraiment besoin de la fermer : ça se fera tout seul quand le programme se terminera.
    Mais ça, ton compilateur ne peut pas le deviner. Lui il voit juste un Scanner qu'on ouvre mais qu'on ferme pas.

    Citation Envoyé par Jarell Voir le message
    Ici aussi à la ligne 12 j'ai un warning m'expliquant que mon 'sc' n'est jamais fermé :/
    Même raison, même punition, mais une remarque supplémentaire :

    Il ne faut pas ouvrir plusieurs Scanner sur une même source. Si tu veux lire System.in avec un Scanner, tu ne dois en créer qu'un, un seul new Scanner, dans la totalité de ton programme. Rien ne t'empêche de te servir de cet unique Scanner partout dans ton programme.

    Même chose pour tous les autres flux et tous les autres décorateurs : on ne peut associer qu'un seul décorateur à un flux. Sinon ils se gênent les uns les autres.

    Citation Envoyé par Jarell Voir le message
    Et enfin l'erreur que me sort la console :
    Parce que ce que lit le Scanner ne ressemble pas à un int. Ça peut être parce que tu as tapé autre chose que des chiffres de 0 à 9, ou parce que tu utilises plus d'un Scanner, par exemple.



    Citation Envoyé par Mishulyna Voir le message
    Essaie de changer au moins le type de la variable "conversion" en Float ou Double.
    float ou double. Et en fait, non, juste double. Un float n'a rien à faire ici.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 78
    Par défaut
    Merci d'avoir pris du temps pour me répondre, je vais regarder tout ça.

  5. #5
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Citation Envoyé par thelvin Voir le message

    float ou double. Et en fait, non, juste double. Un float n'a rien à faire ici.
    Merci pour la correction.

  6. #6
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Tu peux réaliser un try cach autour du scanner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try {
    	degre = sc.nextInt();			
    } catch (Exception e) {
    	System.out.println("Je n'ai pas réussi à lire votre chiffre");
    	// TODO: handle exception
    	degre = 0;
    }
    source :
    http://docs.oracle.com/javase/7/docs...Exception.html
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

Discussions similaires

  1. [COM] Problème avec l'objet COM
    Par Commodore dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 16/05/2006, 20h36
  2. [Delta3d] probléme avec un objet dans une map
    Par astragoth dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 27/03/2006, 14h49
  3. Problème avec l'Objet "Session"
    Par ghislain007 dans le forum ASP
    Réponses: 4
    Dernier message: 03/03/2006, 22h07
  4. Problème avec l'objet FileSystemObject
    Par Poussy-Puce dans le forum ASP
    Réponses: 4
    Dernier message: 27/10/2005, 16h25
  5. [FLASH MX] Problème avec l'objet Date
    Par n_tony dans le forum Flash
    Réponses: 13
    Dernier message: 22/03/2005, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo