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 :

Un tp de conversion


Sujet :

avec Java

  1. #1
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut Un tp de conversion
    Salut tout le monde ,
    Je suis une debutante en java et je souhaite faire un petit programme pour la conversion de l'unité mondiale en unité anglaise mais y'a une erreur qui se produit et je n'arrive pas à savoir la cause le voici le code
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
     
     
    import java.util.Scanner;
    public class Convention {
     
    	public static void main(String[] args) {
     
    	Scanner sc=new Scanner(System.in);
    	double f;
    	//String anglaise,mondiale;
    	String [] unite={"foot","pound","inch"};
    	char rep='o';
     
    	System.out.println(" ------------------------------------------------------------------------");
    	System.out.println("|             CONVERSION ANGLAISE ==> MONDIALE               |");
    	System.out.println(" ------------------------------------------------------------------------");
     
    	System.out.println("veuillez choisir l'unite foot/pound/inch");
     
    	while(rep=='o'){
     
     
    		String un=sc.nextLine(); 
    		System.out.println("veuillez entrer le nombre a convertir");
    		f=sc.nextDouble();
     
     
     
     
    				if(un.equals(unite[0])){
     
    						System.out.println("LE resultat est "+f+" foot vaut en Centimètre "+ f*30.48);
     
    						System.out.println("voulez vous continuez o/n");
    						rep=sc.nextLine().charAt(0);					
     
    				}
     
     
    	              if(un.equals(unite[1])){
     
     
    					System.out.println("LE resultat est "+f+" pound vaut en Centimètre "+ f*0.45);
    					System.out.println("voulez vous continuez o/n");
    					rep=sc.nextLine().charAt(0);
     
    	       }
     
    				 if(un.equals(unite[2])){
     
     
    				System.out.println("LE resultat est "+f+" inch vaut en Centimètre "+ f*2.45);
     
    				System.out.println("voulez vous continuez o/n");
    				rep=sc.nextLine().charAt(0); 
     
    	             }
     
    				 while(rep !='o' &&  rep != 'n'){
    					  System.out.println("voulez vous r�essayer(o/n)");
    					 rep =  sc.nextLine().charAt(0);
    				  }
     
     
     
     
     
    	}
     
     
     
     
    	}
     
     
     
    }

    et l'erreur qui s'affiche est :
    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.lang.String.charAt(Unknown Source)
    at Convention.main(Convention.java:34)
    Si quel'qun a une idée qu'il m'oriente s'il vous plait
    Merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    NoOb
    Inscrit en
    Mai 2007
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NoOb

    Informations forums :
    Inscription : Mai 2007
    Messages : 554
    Points : 852
    Points
    852
    Par défaut
    Bonjour,

    Le programme doit pas attendre que tu rentres quelque chose pour faire le 'charAt(0)', d’où l'exception de dépassement de tableau.

    Je pense que ceci fonctionnera.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String s = sc.nextLine();
    rep = s.charAt(0);

  3. #3
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonjour,

    Manifestement, l'erreur se produit si l'utilisateur ne saisit pas "o" ou "n" mais appuie directement sur entrée.
    Il faut vérifier que l'utilisateur a saisi au moins un caractère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String saisie = "";
    while (saisie.length() == 0) {
    	System.out.println("voulez vous continuez o/n");
    	saisie = sc.nextLine();
    }
    rep=saisie.charAt(0);

  4. #4
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par Nudger Voir le message
    Bonjour,

    Manifestement, l'erreur se produit si l'utilisateur ne saisit pas "o" ou "n" mais appuie directement sur entrée.
    Il faut vérifier que l'utilisateur a saisi au moins un caractère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String saisie = "";
    while (saisie.length() == 0) {
    	System.out.println("voulez vous continuez o/n");
    	saisie = sc.nextLine();
    }
    rep=saisie.charAt(0);
    Merci pour vos reponses et ce que vous venez de me proposer marche super sauf que sa m'affiche deux fois (voulez vous continuez o/n) pourquoi??j'arrive pas à comprendre ?

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    après f=sc.nextDouble();
    tu devrais ajouter un sc.nextLine() pour passer à la ligne suivante

  6. #6
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    après f=sc.nextDouble();
    tu devrais ajouter un sc.nextLine() pour passer à la ligne suivante
    Ahhhhh wéé c'est vrai ça marche super bien merci pour vos aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion Assembleur Motorola 68xxx en Intel 80xxx
    Par markham dans le forum Autres architectures
    Réponses: 3
    Dernier message: 22/11/2002, 20h09
  2. [MSXML] Comment empécher la conversion des entités ?
    Par nima dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/11/2002, 14h14
  3. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/09/2002, 12h35
  4. [Conversions] Millisecondes...
    Par agh dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h25
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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