Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec les double : NumberFormatException

(Aux nombres au delà de 1 000)

Sujet résolu
    23 mai 2015 à 23:01:12

    Bonjour,

    Voici mon problème : lorsque que je demande au programme de me convertir un double en String, une erreur apparaît lorsque ce même nombre va au-delà de 1 000, quelqu'un aurait une explication ? Merci d'avance :D !

    Erreur obtenue :

    Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "1 000"
    	at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
    	at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
    	at java.lang.Double.parseDouble(Unknown Source)
    	at java.lang.Double.valueOf(Unknown Source)
    	at net.calculator.calculator.Operations.Calcul(Operations.java:17)
    	at net.calculator.calculator.CListener$Equal.actionPerformed(CListener.java:47)
    	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    	at java.awt.Component.processMouseEvent(Unknown Source)
    	at javax.swing.JComponent.processMouseEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    	at java.awt.EventQueue.access$500(Unknown Source)
    	at java.awt.EventQueue$3.run(Unknown Source)
    	at java.awt.EventQueue$3.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue$4.run(Unknown Source)
    	at java.awt.EventQueue$4.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    



    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2015 à 14:05:30

      Bonjour.

      Pourrions nous voir le code ?

      Cordialement.

      • Partager sur Facebook
      • Partager sur Twitter
        24 mai 2015 à 14:36:58

        Bien sûr voici une partie du code :

        La méthode qui me permet de simplifier un double :

        public static String simplified(double d) {
        		String text = df.format(d);
        		return text;
        	}

        J'affiche un texte grâce au JLabel :

        textViewing2 = String.valueOf(simplified(numberDisplayed)+operator+simplified(Double.valueOf(viewing.getText()).doubleValue())+"="); //textViewing2 = JLabel n°2
        			numberDisplayed = numberDisplayed + Double.valueOf(viewing.getText()).doubleValue(); //numberDisplayed = nombre affiché dans les JLabel
        			viewing.setText(String.valueOf(simplified(numberDisplayed)));
        			viewing2.setText(textViewing2+numberDisplayed); //Viewing = JLabel n°1 

        L'erreur apparaît lorsque que le texte récupéré est supérieur à 1 000.


        -
        Edité par Ulyse5488 24 mai 2015 à 14:37:49

        • Partager sur Facebook
        • Partager sur Twitter
          24 mai 2015 à 15:28:26

          Je ne sais pas comment fonctionnent les parseurs Java, mais il se peut que le programme s'attende à recevoir 1000 et non pas 1 000. Le caractère espace ne fait pas partie du nombre, c'est seulement pour faciliter la lecture. À mon avis c'est à cause de ce caractère que ça plante.

          • Partager sur Facebook
          • Partager sur Twitter
          ⚙️ Une solution simple règle le problème ; une solution compliquée en crée un nouveau.
            24 mai 2015 à 15:47:02

            Oui, j'ai réussi à corriger mon erreur il faut initialiser le DecimalFormat comme ceci :

            DecimalFormat df = new DecimalFormat("0.##########");

            Merci quand même :D

            -
            Edité par Ulyse5488 24 mai 2015 à 15:47:14

            • Partager sur Facebook
            • Partager sur Twitter

            Problème avec les double : NumberFormatException

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown