2016-10-04 1 views
0

Je prends une entrée d'une zone jtext et doit être capable de lire plusieurs lignes à partir de l'entrée et de sortir le calcul. Je peux lire la première ligne, mais aucune après ça (ça plante). Voici le code que j'ai en ce momentJava - Lecture de plusieurs lignes dans jtextarea; convertir en tableau char

 String exp = inputTextArea.getText(); 
     String[] lines = exp.split("\\n"); 
     for (int i = 0; i < lines.length; i++) 
     { 
     InterpObj.p = exp.toCharArray(); 
     InterpObj.counter = 0; 

     double nr = InterpObj.E(); 
     String str=Double.toString(nr); 

     outputTextArea.append(" " +str); 
     } 

Voici les messages d'erreur

{Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For  input string: "6 12" 
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) 
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) 
at java.lang.Double.parseDouble(Double.java:538) 
at Interpreter.A(Interpreter.java:43) 
at Interpreter.E(Interpreter.java:24) 
at Interp_1a$ButtonListener.actionPerformed(Interp_1a.java:91) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
at java.awt.Component.processMouseEvent(Component.java:6525) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
at java.awt.Component.processEvent(Component.java:6290) 
at java.awt.Container.processEvent(Container.java:2234) 
at java.awt.Component.dispatchEventImpl(Component.java:4881) 
at java.awt.Container.dispatchEventImpl(Container.java:2292) 
at java.awt.Component.dispatchEvent(Component.java:4703) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462) 
at java.awt.Container.dispatchEventImpl(Container.java:2278) 
at java.awt.Window.dispatchEventImpl(Window.java:2750) 
at java.awt.Component.dispatchEvent(Component.java:4703) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 
at java.awt.EventQueue.access$500(EventQueue.java:97) 
at java.awt.EventQueue$3.run(EventQueue.java:709) 
at java.awt.EventQueue$3.run(EventQueue.java:703) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) 
at java.awt.EventQueue$4.run(EventQueue.java:731) 
at java.awt.EventQueue$4.run(EventQueue.java:729) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
+0

À un certain point dans votre classe d'interpréteur, vous essayez de transformer '" 6 12 "' en un seul 'double'. Ça ne marche pas comme ça. Séparez la chaîne par espace ou entrez uniquement un nombre unique sur chaque ligne. En note, je me demande si la ligne 'InterpObj.p = exp.toCharArray();' devrait être réellement 'InterpObj.p = lines [i] .toCharArray();' – jonhopkins

+0

La deuxième partie a fait, erreur stupide. Je vous remercie!! @jonhopkins –

Répondre

0

Je pense que vous devriez vérifier votre méthode Interpreter.E() ...

à Interpreter.E (Interprète .java: 24)

0

Besoin de changer InterpObj.p = exp.toCharArray(); à InterpObj.lines[i] = exp.toCharArray(); Merci à @jonhopkins