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 :

Soucis pour lire la saisie clavier


Sujet :

avec Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Soucis pour lire la saisie clavier
    Bonjour tout le monde, je suis à la recherche d'un mentor ,ou bien de partenaire pour apprendre à développer en java.
    Je fais le livre du zéro + tutoriel vidéo YouTube.

    Je rencontre des blocages (simples ,je pense mais étant débutant je ne sais pas comment les corriger.)

    Exemple : 1er problème :
    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
    37
    38
    import java.util.Scanner;
    public class Fahreinheit
    {
     
    	public static void main(String[] args) 
    	{
    		Scanner sc = new Scanner(System.in);
    		char reponseQ = 'O';
    		System.out.print("Bonjour,");
    		while (reponseQ == 'O')
    		{
     
    		System.out.println("quelles valeurs voulez vous convertir?\n"
    				+ "1 : Faheinheit -> Celsius\n"
    				+ "2 : Celsius    -> Fahreinheit\n");
    			byte choixConv=sc.nextByte();
    		System.out.println("Quelle température convertir ?");
    		float choixTemperature=sc.nextFloat();
     
    		if(choixConv==1) 
    			{
    			double resulta=(choixTemperature-32*5)/9;
    			System.out.println(choixTemperature+"F Correspond à :"+resulta+"C");
    			}
    		else
    			{
     
    			double resulta=9/5*choixTemperature+32;
    			System.out.println(choixTemperature+"C Correspond à :"+resulta+"F");
    			};
     
    			System.out.println("Voulez vous convertir une autre valeur ? O/N?");
                reponseQ = sc.nextLine().charAt(0);
    		}
    		System.out.println("Merci,au revoir!");
    	}
     
    }
    le message d'erreur :
    Bonjour,quels valeurs voulez vous convertir?
    1 : Faheinheit -> Celsius
    2 : Celsius -> Fahreinheit

    1
    Quel température convertir ?
    23
    23.0F Correspond a :-15.222222328186035C
    Voulez vous convertir une autre valeur?O/N?
    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.base/java.lang.StringLatin1.charAt(Unknown Source)
    at java.base/java.lang.String.charAt(Unknown Source)
    at Fahreinheit.main(Fahreinheit.java:33)
    MERCI !!

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    C'est assez curieux.
    J'ai ajouté un sc.nextLine(); à la ligne 33 et ça fonctionne :
    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
    37
    38
    39
    import java.util.Scanner;
    public class Fahreinheit
    {
     
    	public static void main(String[] args) 
    	{
    		Scanner sc = new Scanner(System.in);
    		char reponseQ = 'O';
    		System.out.print("Bonjour,");
    		while (reponseQ == 'O')
    		{
     
    		System.out.println("quelles valeurs voulez vous convertir?\n"
    				+ "1 : Faheinheit -> Celsius\n"
    				+ "2 : Celsius    -> Fahreinheit\n");
    			byte choixConv=sc.nextByte();
    		System.out.println("Quelle température convertir ?");
    		float choixTemperature=sc.nextFloat();
     
    		if(choixConv==1) 
    			{
    			double resulta=(choixTemperature-32*5)/9;
    			System.out.println(choixTemperature+"F Correspond à :"+resulta+"C");
    			}
    		else
    			{
     
    			double resulta=9/5*choixTemperature+32;
    			System.out.println(choixTemperature+"C Correspond à :"+resulta+"F");
    			};
     
    			System.out.println("Voulez vous convertir une autre valeur ? O/N?");
                            sc.nextLine();
                reponseQ = sc.nextLine().charAt(0);
    		}
    		System.out.println("Merci,au revoir!");
    	}
     
    }

    C'est comme si il fallait ajouter sc.nextLine(); pour "purger" le sc.nextFloat();

    Maintenant, je t'invite à laisser tomber les exercices avec entrées clavier car tu vas passer ton temps à déboguer des trucs inintéressants.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Nouveau membre du Club Avatar de Runhide
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 35
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    C'est assez curieux.
    J'ai ajouté un sc.nextLine(); à la ligne 33 et ça fonctionne :
    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
    37
    38
    39
    import java.util.Scanner;
    public class Fahreinheit
    {
     
    	public static void main(String[] args) 
    	{
    		Scanner sc = new Scanner(System.in);
    		char reponseQ = 'O';
    		System.out.print("Bonjour,");
    		while (reponseQ == 'O')
    		{
     
    		System.out.println("quelles valeurs voulez vous convertir?\n"
    				+ "1 : Faheinheit -> Celsius\n"
    				+ "2 : Celsius    -> Fahreinheit\n");
    			byte choixConv=sc.nextByte();
    		System.out.println("Quelle température convertir ?");
    		float choixTemperature=sc.nextFloat();
     
    		if(choixConv==1) 
    			{
    			double resulta=(choixTemperature-32*5)/9;
    			System.out.println(choixTemperature+"F Correspond à :"+resulta+"C");
    			}
    		else
    			{
     
    			double resulta=9/5*choixTemperature+32;
    			System.out.println(choixTemperature+"C Correspond à :"+resulta+"F");
    			};
     
    			System.out.println("Voulez vous convertir une autre valeur ? O/N?");
                            sc.nextLine();
                reponseQ = sc.nextLine().charAt(0);
    		}
    		System.out.println("Merci,au revoir!");
    	}
     
    }

    C'est comme si il fallait ajouter sc.nextLine(); pour "purger" le sc.nextFloat();

    Maintenant, je t'invite à laisser tomber les exercices avec entrées clavier car tu vas passer ton temps à déboguer des trucs inintéressants.

    Oulala 😕😕😕

    C'est très (très) stupide comme remarque. Toute les expériences surtout en Entré-Sorties sont importantes. C'est le but de l'informatique, une Entrée, un traitement, une Sortie.

    Avec une couche métier on créer un CRUD.

    Bref moi je t'encourage vivement à continuer ce genre d'expérience, primordial pour les débutants !

  4. #4
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    Citation Envoyé par Runhide Voir le message
    Oulala 😕😕😕
    C'est très (très) stupide comme remarque. Toute les expériences surtout en Entré-Sorties sont importantes. C'est le but de l'informatique, une Entrée, un traitement, une Sortie.
    Avec une couche métier on créer un CRUD.
    Bref moi je t'encourage vivement à continuer ce genre d'expérience, primordial pour les débutants !
    oui toutes les expériences avec le E/S sont importantes MAIS
    désolé pas d'acc avec la qualification "stupide" ... ou dire que c'est primordial pour les débutants.
    Perso j'ai enseigné Java à une tripotée de gens (depuis 1996) et, dans mes exercices, je n'ai que rarement fait appel à des E/S depuis la console et personne n'en est mort! (pourtant ils ont tous appris les E/S bien sûr).
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  5. #5
    Nouveau membre du Club Avatar de Runhide
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 35
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par professeur shadoko Voir le message
    oui toutes les expériences avec le E/S sont importantes MAIS
    désolé pas d'acc avec la qualification "stupide" ... ou dire que c'est primordial pour les débutants.
    Perso j'ai enseigné Java à une tripotée de gens (depuis 1996) et, dans mes exercices, je n'ai que rarement fait appel à des E/S depuis la console et personne n'en est mort! (pourtant ils ont tous appris les E/S bien sûr).
    Pour moi c'est comme jouer de la guitare sans savoir l'accorder. Ni comprendre le solfège.

    Que tu aies enseigné ou non ne change rien, et je trouve même ça pire que des élèves apprennent des choses de ta part sans les pratiquer.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    C'est plus comme savoir conduire sans savoir se garer ni sortir du parking.

    La voiture fonctionne très bien si elle est prête à l'emploi, et c'est tout ce dont on a besoin pour conduire. Mais c'est compliqué en pratique de décider de se mettre à conduire si on peut pas la mettre sur la route ni l'en enlever quand on a fini.

    Et puis bon, au bout d'un moment, se garer et sortir d'une place, c'est un des aspects de conduire, d'une façon ultra-spécialisée et d'une précision frustrante.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Utilisation de ioctl() pour lire les entrées clavier
    Par davidbroglie dans le forum C++
    Réponses: 5
    Dernier message: 09/05/2018, 14h37
  2. Lire une saisie clavier
    Par Miistik dans le forum VBScript
    Réponses: 4
    Dernier message: 02/05/2013, 13h43
  3. Réponses: 1
    Dernier message: 23/02/2007, 08h49
  4. interrompre une requete pour une saisie clavier
    Par ricoree78 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 24/11/2006, 16h44
  5. petit soucis pour lire sur un port usb le createfile n'accep
    Par anthonycosson dans le forum Windows
    Réponses: 5
    Dernier message: 14/02/2006, 09h34

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