2016-12-25 1 views
0

Je souhaite stocker le texte de JTextField dans un tableau, puis le sommer.Stocker du texte JTextField dans un tableau et une somme - Java

btn.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
    //fldi is the JTextField I want to get text from 
    int ii = Integer.parseInt(fldi.getText()); 
    } 
}); 

Que dois-je faire ensuite? comment puis-je diviser le texte à partir de là, par exemple si l'entrée de l'utilisateur est "256" je pense qu'il devrait être stocké dans un tableau comme "2", "5", "6".

EDIT: Ainsi, après l'aide de Jake Miller J'ai:

String input = fldi.getText(); 
      int sum = 0; 

      int[] values = new int[input.length()]; 
      for(int i = 0; i < input.length(); i++) { 
      int number; 
      if(input.substring(i, i+1).equals("-")) { 
       number = Integer.parseInt(input.substring(i, i+2)); 
      } else { 
       number = Integer.parseInt(input.substring(i, i+1)); 
      } 
      values[i] = number;   
       sum = sum + values[i]; 
      } 

      fldwo.setText(Integer.toString(sum)); 

Mais quand je l'essayer pour les nombres négatifs comme « -2 » et « -1 » valeurs stocke tableau 4 valeurs « -2 "," 2 "," -1 "," 1 "et la somme à la fin est 0, mais il devrait être -3.

+0

Besoin de plus de détails. Les chiffres sont-ils toujours à un seul chiffre? etc. – DarkV1

+0

non ils peuvent avoir n'importe quelle longueur – wolverine961

+0

Ne pas analyser immédiatement. Stockez l'entrée dans une chaîne, utilisez une boucle pour utiliser .substring() pour parcourir chaque caractère dans la chaîne, et analyser chaque numéro individuel et stocker dans un tableau int. –

Répondre

1

Ne pas analyser immédiatement. Stockez l'entrée dans une chaîne, utilisez une boucle pour utiliser .substring() pour parcourir chaque caractère dans la chaîne, et analyser chaque numéro individuel et stocker dans un tableau int.

String input = fldi.getText(); 
int[] values = new int[input.length()]; 
for(int i = 0; i < input.length(); i++) { 
    values[i] = Integer.parseInt(input.substring(i, i+1)); 
} 

Si elles entrée 256, le tableau aura 3 valeurs: 2, 5 et 6

EDIT

Pour les nombres négatifs, vous aurez besoin d'avoir un chèque de le caractère "-" car il indique un nombre négatif. Ensuite, vous utiliserez substring(i, i+2) pour prendre deux caractères par opposition à un (le - et le nombre lui-même). Vous n'avez pas non plus besoin du tableau. Vous pouvez simplement ajouter directement chaque nombre analysé à la somme. Vous devez également utiliser une boucle while et incrémenter moi-même. Si vous trouvez un nombre négatif, vous utilisez 2 caractères, ce qui signifie que vous devez incrémenter i deux au lieu de 1 .:

int sum = 0; 
    int i = 0; 
    while(i < input.length()) { 
     int number; 
     if(input.substring(i, i+1).equals("-")) { 
      number = Integer.parseInt(input.substring(i, i+2)); 
      i += 2; 
     } else { 
      number = Integer.parseInt(input.substring(i, i+1)); 
      i++; 
     } 
     sum += number; 
    } 

Un exemple:

Une entrée utilisateur 125-35. Les trois premiers caractères ne seront pas égaux à "-", par conséquent ils seront simplement analysés et stockés dans le tableau de valeurs. Une fois que vous atteignez le 4ème caractère (3ème index), le caractère sera "-", donc l'instruction if fera que le nombre soit égal à -3 car la sous-chaîne retourne maintenant deux caractères par opposition à un.

+0

Merci! Je l'ai fait fonctionner ... – wolverine961

+0

non vous devriez analyser comme ceci: Integer.parseInt (input.substring (i, i + 1)); – wolverine961

+0

@DontKnowMuchButGettingBetter Désolé. Envoyé cette réponse sur mobile si accidentellement laissé cette partie. Mise à jour –