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 :

Format numérique incorrect


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut Format numérique incorrect
    bonjour
    lors exécution mon programme, il s' affiche "Format numérique incorrect"
    pourriez vous m'aider svp
    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
     
    public class Test3 
    {
    	public static void main(String[] args) 
    	{
    	 System.out.println("Saissisez la quantité de saisies:");
    	 int t=Lire.entierInt();
    	 double[]saisies=new double[t];
    	 double[] tab=saisies;
    	 for(int i=0;i<tab.length-1;i++)
    	 {
    		 for(int j=0;j<tab.length-1;j++)
    		 {
    			 if(tab[j]>tab[j+1])
    			 {
    			  int temp=(int) tab[i];
    			  tab[i]=tab[i+1];
    			  tab[i+1]=temp;
    			 }
    		 }
    	 }
    	 for(int i=0;i<tab.length;i++)
    	 {
    		 System.out.print(tab[i]+"-");
    	 }
    	}
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    A priori, je suppose que tu dois entrer un nombre dans un format déterminé, et que celui que tu saisi ne correspond pas à ce format. La lecture se faisant à priori dans la classe Lire, dont tu nous fournis pas le source, difficile d'en dire plus sans partir dans des supputations inutiles.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    voilà la classe Lire
    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
     
    import java.io.*;
    public class Lire 
    {
    	// Cette fonction permet de saisir au clavier une variable de type String
        public static String chaine()
        {
    	    String tmp = "";
    	    char C='\0';
    		try 
    		{
    			while ((C=(char) System.in.read()) !='\n')
    			{
    				if (C != '\r')  tmp = tmp+C;
     
    			}
    		}
    		catch (IOException e)
    		{
    			System.out.println("Erreur de frappe");
    			System.exit(0);
    		}
    		return tmp;
        } 
     
    	// Cette fonction permet de saisir au clavier une variable entière de type byte
    	public static byte entierByte()  
    	{
    		byte x=0;
    		try 
    		{
    			x = Byte.parseByte(chaine());
    		}
    		catch (NumberFormatException e) 
    		{
    			System.out.println("Format numérique incorrect");
    			System.exit(0);
    		}	
    		return x ;
    	}
     
    	// Cette fonction permet de saisir au clavier une variable entière de type Short
    	public static short entierShort()
    	{
    		short x=0;
    		try 
    		{
    			x=Short.parseShort(chaine());
    		}
    		catch (NumberFormatException e) 
    		{
    			System.out.println("Format numérique incorrect");
    			System.exit(0);
    		}	
    		return x ;
    	 }
     
    	// Cette fonction permet de saisir au clavier une variable entière de type int
    	public static int entierInt()  
    	{
    		int x=0;
    		try 
    		{
    			x=Integer.parseInt(chaine());
    		}
    		catch (NumberFormatException e) 
    		{
    			System.out.println("Format numérique incorrect");
    			System.exit(0);
    		}	
    		return x ;
    	 }
     
    	// Cette fonction permet de saisir au clavier une variable entière de type long
    	public static long entierLong() 
    	{
    		long x=0;
    		try 
    		{
    			x=Integer.parseInt(chaine());
    		}
    		catch (NumberFormatException e) 
    		{
    			System.out.println("Format numérique incorrect");
    			System.exit(0);
    		}	
    		return x ;
    	 }
     
    	 // Cette fonction permet de saisir au clavier une variable  réelle  double
    	public  static double reelDouble()
    	{
    		double x=0.0;
    		try 
    		{
    			x=Double.valueOf(chaine()).doubleValue();
    		}
    		catch (NumberFormatException e) 
    		{
    			System.out.println("Format numérique incorrect");
    			System.exit(0);
    		}	
    		return x ;
    	 }
     
    	// Cette fonction permet de saisir au clavier une variable  réelle  float
    	public  static float reelFloat()
    	{
    		float x=0.0f;
    		try 
    		{
    			x=Double.valueOf(chaine()).floatValue();
    		}
    		catch (NumberFormatException e) 
    		{
    			System.out.println("Format numérique incorrect");
    			System.exit(0);
    		}	
    		return x ;
    	}
     
    	// Cette fonction permet de saisir au clavier une variable  de type char
    	public  static char caractere()  
    	{
    		String tmp=chaine();
    		if (tmp.length()==0)
    		{
    			return '\n';
    		}
    		else 
    		{
    			return tmp.charAt(0);
    		}
    	}
    }

  4. #4
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Hummm, je voiss, je voiisss, je voisun homme qui tapes des caractères non numérique alors qu'il ne devrait paaas.

    Humm, désolé ma vision c'est arrêtée brusquement.. Surement par manque d'informations.

    Ça vous fera 10$ siou-plait

    Edit : Mouarf grillé

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Elle viens d'où cette classe Lire, il y a quoi dedans, qu'est-ce que tu tappe au clavier, quel est le message d'erreur complet avec sa stacktrace?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    display:
    Saisissez la quantité de saisies:
    je tape 5,3,1,4,2

    il me réplique:
    Format numérique incorrect

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Si tu regardes le code de la méthode que tu appelles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public static int entierInt()  
    {
    	int x=0;
    	try 
    	{
    		x=Integer.parseInt(chaine());
    	}
    	catch (NumberFormatException e) 
    	{
    		System.out.println("Format numérique incorrect");
    		System.exit(0);
    	}	
    	return x ;
     }
    Tu vois bien quand ça affiche "Format numérique incorrect", non ? En cas d'exception NumberFormatException, qui se passe quand à ton avis ? Quand chaîne() retourne un String incapable d'être converti en nombre entier.

    Ta méthode chaîne() lit tous les caractères saisis tant qu'on ne fait pas "entrée" (nouvelle ligne).

    Toi tu saisi une liste de nombres entiers, séparés par des virgules, et ensuite tu fais "entrée". Donc le code essaye de convertir "5,3,1,4,2" en entier. Ce qui n'est pas possible, en utilisant parseInt(). Un nombre et une liste de nombres, ce n'est pas la même chose.

    (Par ailleurs, le traitement de l'exception est un peu "violent" : à la moindre faute de frappe, on arrête le programme !)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Citation Envoyé par domxaline Voir le message
    je tape 5,3,1,4,2
    Tel quel avec les virgules ?

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Citation Envoyé par domxaline Voir le message
    display:
    Saisissez la quantité de saisies:
    je tape 5,3,1,4,2

    il me réplique:
    Format numérique incorrect
    non après chaque nombre saisi tu dois aller à la ligne(touche entrée) .Perso pour la lecture d'une entrée au clavier je prefère construire un Scanner lié à System.in(Scanner in = new Scanner(System.in);

    Pour trier ton tableau tu n'a pas besoin d'un second tableau

    Code java : 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
     
    public static void main(String[] args) 
    	{
    	 System.out.println("Saissisez la quantité de saisies:");
    	 int t=Lire.entierInt();
    	// double[]saisies=new double[t];
    	 double[] tab=new double[t];
        //  System.out.println("Saissisez les elements du tableau :");
     
          for(int i=0;i<tab.length;i++){
    	  System.out.println("Saissisez l'elements n° " + (i+1) + " du tableau :");
    	tab[i] =Lire.reelDouble();
    	}
    	 for(int i=0;i<tab.length-1;i++)
    	 {
    		 for(int j=i+1;j<tab.length;j++)
    		 {
    			 if(tab[i]>tab[j])
    			 {
    			  double temp= tab[i];
    			  tab[i]=tab[j];
    			  tab[j]=temp;
    			 }
    		 }
    	 }
     
    	 System.out.println("Le tableau trié est: ");
    	 for(int i=0;i<tab.length;i++)
    	 {
    		 System.out.print(tab[i]+"\t,");
    	 }
             	  System.out.println(" ");
    	}

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par domxaline Voir le message
    display:
    Saisissez la quantité de saisies:
    je tape 5,3,1,4,2

    il me réplique:
    Format numérique incorrect
    Etonnament, 5,3,1,4,2 ce n'est pas un entier. 5 en est un, 3 en est un, mais l'ensemble ne l'est pas. Et tu as codé ta classe Lire pour lire un nombre par ligne, pas plus.

    Au passage cette classe Lire n'a aucun intérêt. La classe Scanner en java fait le même genre de boulot en bien mieux.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    j'ai écrit ainsi:
    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
     
    import java.util.Scanner;
    public class Test
    {
     public static void main(String[]args)
     {
            System.out.println("Saissisez la quantité de saisies:");
            Scanner sc = new Scanner(System.in);
            int nbValeurs = sc.nextInt();
            int[] valeurs = new int[nbValeurs];
            for (int i=0; i < valeurs.length; i++) {
                valeurs[i] = sc.nextInt();
     
            for(int j=0;j<valeurs.length-1;j++)
             {
                 if(valeurs[j]>valeurs[j+1])
                 {
                  int temp=valeurs[j];
                  valeurs[j]=valeurs[j+1];
                  valeurs[j+1]=temp;
                 }
             }
         }
         for(int i=0;i<valeurs.length;i++)
         {
             System.out.print(valeurs[i]+"-");
         }
        }
    }
    display donne ceci:
    Saissisez la quantité de saisies:
    5,3,1,4,2
    Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:909)
    at java.util.Scanner.next(Scanner.java:1530)
    at java.util.Scanner.nextInt(Scanner.java:2160)
    at java.util.Scanner.nextInt(Scanner.java:2119)
    at Test.main(Test.java:8)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 10 seconds)

  12. #12
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    encore une fois tu saisies autre chose que des entiers(cf.les reponses précédentes).Ton programme te demande d'abord de saissir la taille du tableau puis tu vas à la ligne pour remplir ton tableau ligne par ligne ligne avec un entier.
    dans mon dernier message j'ai réécris entièrement ton programme qui normalement doit maintenant fonctionner avec la fameuse classe Lire.Si tu veux utiliser les scanners il suffit de remplacer Lire.reelDouble() par sc.nextDouble() et Lire.entierInt() par sc.nextInt()

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    merci beaucoup

Discussions similaires

  1. Conversion format numérique/caractère
    Par Laverdure_mt dans le forum Access
    Réponses: 1
    Dernier message: 16/08/2006, 14h49
  2. Réponses: 4
    Dernier message: 09/06/2006, 09h33
  3. Format numérique
    Par viscere dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 03/05/2006, 14h45
  4. Format numérique
    Par _developpeur_ dans le forum Access
    Réponses: 7
    Dernier message: 04/01/2006, 11h19
  5. Réponses: 2
    Dernier message: 21/06/2005, 16h37

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