String[] : tableau de chaines de caractères

String[] : tableau de chaines de caractères - Java - Programmation

Marsh Posté le 12-12-2007 à 19:03:08    

Bonjour,
je souhaiterais créer un tableau de chaines de caractères.
J'essaie donc de faire :
 
String[] userInputs;
[...]
userInputs[0] = textField1.getText();
 
mais cela ne fonctionne pas
 
Comment faire ?
 
Merci :)

Reply

Marsh Posté le 12-12-2007 à 19:03:08   

Reply

Marsh Posté le 13-12-2007 à 01:43:11    

Salut,
 

dRfELL a écrit :

String[] userInputs;
[...]
userInputs[0] = textField1.getText();
 
mais cela ne fonctionne pas


 
Essaie de donner des infos, parce que avec des "ca marche pas" ou "cela ne fonctionne pas", tu vas etre bien recu ici  [:as253] ...
 
Donc tu as bien declare ta variable, as tu bien pense aussi a l'initialiser avec "userInputs = new String[10];" par exemple pour que l'objet soit utilisable ?
 
@++

Reply

Marsh Posté le 13-12-2007 à 13:31:19    

oui j'ai bien fait ça :)
voici l'erreur que j'obtiens

Citation :


 at java.lang.Integer.parseInt(Unknown Source)
 at java.lang.Integer.<init>(Unknown Source)
 at controller.GestionEntites.creerEntite(GestionEntites.java:53)
 at controller.FenetreCreationEntite.actionPerformed(FenetreCreationEntite.java:181)
 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.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)

Reply

Marsh Posté le 13-12-2007 à 13:59:31    

c'est con, t'as enlevé juste la ligne intéressante.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 13-12-2007 à 14:38:23    

Il y en a quand meme une intéressante :

Code :
  1. at controller.GestionEntites.creerEntite(GestionEntites.java:53)


 
j'imagine qu'a la ligne 53 de GestionEntites.java, tu fais un new Integer(<quelque chose> ) et ce quelque chose est soit null ou ne représente pas un entier

Reply

Marsh Posté le 13-12-2007 à 16:51:44    

En effet, voici mon code :

Code :
  1. public void creerEntite(String typeEntite, String[] userInputs)
  2. [...]
  3.  else if(typeEntite.equalsIgnoreCase("pays" )) {
  4.   Pays P;
  5.   String nom = userInputs[0];
  6.   Integer PIB = new Integer(userInputs[1]);
  7.   Float com = new Float(userInputs[2]);
  8.   P = new Pays(nom, PIB.intValue(), com.floatValue());
  9.   this._pays.addElement(P);
  10.  }
 

userInputs est lu au départ à partir d'un JTextField

Message cité 1 fois
Message édité par dRfELL le 13-12-2007 à 16:52:26
Reply

Marsh Posté le 14-12-2007 à 04:01:32    

Salut,
 

dRfELL a écrit :

Code :
  1. Integer PIB = new Integer(userInputs[1]);


 
userInputs est lu au départ à partir d'un JTextField


 
Donc le probleme c'est quand tu Parses la chaine fournie par le JTextField pour faire l'Integer...
La doc Java dit bien :
 
public Integer(String s) throws NumberFormatExceptionConstructs a newly allocated Integer object that represents the int value indicated by the String parameter. The string is converted to an int value in exactly the manner used by the parseInt method for radix 10.  
Parameters: s - the String to be converted to an Integer.  
Throws: NumberFormatException - if the String does not contain a parsable integer.
See Also: parseInt(java.lang.String, int)

 
Donc le probleme vient du texte entre dans le JTextField quand il est parse. C'est quoi les valeurs que tu rentres ?
 
Au passage lis dans le Javadoc ce qui concerne "parseInt(java.lang.String, int)" qui intervient apres "new Integer(String s)", c'est interessant :
 
public static int parseInt(String s, int radix) throws NumberFormatExceptionParses the string argument as a signed integer in the radix specified by the second argument. The characters in the string must all be digits of the specified radix (as determined by whether Character.digit(char, int) returns a nonnegative value), except that the first character may be an ASCII minus sign '-' ('\u002D') to indicate a negative value. The resulting integer value is returned.  
An exception of type NumberFormatException is thrown if any of the following situations occurs:  
 
The first argument is null or is a string of length zero.  
The radix is either smaller than Character.MIN_RADIX or larger than Character.MAX_RADIX.  
Any character of the string is not a digit of the specified radix, except that the first character may be a minus sign '-' ('\u002D') provided that the string is longer than length 1.  
The value represented by the string is not a value of type int.  
Examples:  
 
 parseInt("0", 10) returns 0
 parseInt("473", 10) returns 473
 parseInt("-0", 10) returns 0
 parseInt("-FF", 16) returns -255
 parseInt("1100110", 2) returns 102
 parseInt("2147483647", 10) returns 2147483647
 parseInt("-2147483648", 10) returns -2147483648
 parseInt("2147483648", 10) throws a NumberFormatException
 parseInt("99", 8) throws a NumberFormatException
 parseInt("Kona", 10) throws a NumberFormatException
 parseInt("Kona", 27) returns 411787

 
@++

Reply

Marsh Posté le 14-12-2007 à 09:19:47    

Merci :)
Pourtant, je rentre bien des valeurs comme 13, 12323, -12, par exemple

 

PS : j'ai changé en :
public void creerEntite(String typeEntite, String[] userInputs) throws NumberFormatException

 

mais ça reste pareil


Message édité par dRfELL le 14-12-2007 à 09:26:55
Reply

Marsh Posté le 14-12-2007 à 10:22:29    

Citation :

PS : j'ai changé en :
public void creerEntite(String typeEntite, String[] userInputs) throws NumberFormatException


 
Ce que tu dois faire, c'est tester tes variable avant de les utiliser et chercher pourquoi une valeur null arrive là.

Reply

Marsh Posté le 14-12-2007 à 11:51:09    

Bonjour,
pourquoi ne pas tout simplement debugger ou mettre des traces dans ton code ?

Reply

Marsh Posté le 14-12-2007 à 11:51:09   

Reply

Marsh Posté le 14-12-2007 à 12:13:24    

Je ne sais pas ce qu'est "mettre des traces dans le code"
PS : Je précise que j'ai eu en tout et pour tout 5 cours de java, mais que ça me plait et donc j'aime aller un peu plus loin  (j'ai lu des tutoriaux)

Reply

Marsh Posté le 14-12-2007 à 13:18:11    

bha tu fais des System.out.println(unTrucInteressant); de temps en temps pour afficher la valeur de certaines variables qui t'intéressent.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 14-12-2007 à 14:54:35    

si je remplace mon  

Code :
  1. userInputs[0] = textField1.getText();

par un

Code :
  1. System.out.println(textField1.getText());

ça marche

Reply

Marsh Posté le 14-12-2007 à 15:17:04    

Ne me frappez pas :o
j'ai mis getName au lieux de getText...


Message édité par dRfELL le 14-12-2007 à 15:17:13
Reply

Marsh Posté le 14-12-2007 à 16:13:02    

Je rêve ou on n'a toujours pas lu l'exception et on est en train de faires des plans sur la comète? :o


Message édité par sircam le 14-12-2007 à 16:13:13

---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 14-12-2007 à 17:34:45    

Je ne sais pas si ça veut dire quelque chose que ce t'as dit, mais en tout cas, je ne comprends rien  [:dams86]

Reply

Marsh Posté le 14-12-2007 à 18:47:15    

replay

dRfELL a écrit :


voici l'erreur que j'obtiens


brisssou a écrit :

c'est con, t'as enlevé juste la ligne intéressante.



---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 14-12-2007 à 19:45:44    

faut le créer le tableau de String, et pas juste le déclarer

Code :
  1. String[] userInputs = new String[taile_du_tableau];

Message cité 1 fois
Message édité par Kid_Paddle le 14-12-2007 à 19:53:20
Reply

Marsh Posté le 14-12-2007 à 21:05:53    

Apprends à un homme à lire un stacktrace, il débuggera toute sa vie. File lui la soluce, il reviendra à toi demain.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 15-12-2007 à 09:43:04    


Pour savoir, la ligne intéressante, c'est laquelle ?

 
Kid_Paddle a écrit :

faut le créer le tableau de String, et pas juste le déclarer

Code :
  1. String[] userInputs = new String[taile_du_tableau];


 

J'ai résolu le problème, la réponse est juste au dessus :)

 

Sinon, j'avais créé le tableau aussi, mais c'est vrai qu'on le voyait pas dans le bout de code que j'ai posté.

 


Message édité par dRfELL le 15-12-2007 à 15:37:43
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed