2016-10-25 3 views
0

Ich möchte die Summe aller Zahlen aus einer JTextField erhalten. Ich benutze diesen Code, aber es funktioniert nicht. Das Problem ist, dass ich die {d1} nicht als Zahlen aus der JTextField bekommen kann.Finden Sie die Summe der Zahlen in jtextfield

String a = jTextField1.getText(); 
int d1= Integer.parseInt(a); 
     int Arry[] = {d1}; 
int sum = 0; 
for (int i = 0; i<Arry.length; i++) 
    { 
     sum=sum + Arry[i]; 
    } 
jTextField2.setText(sum+""); 
+0

Ich sehe kein Problem. – Paulo

+0

Was ist der Code für Ihre jTextField1? – Brunaldo

+0

@Paulo Es gibt wahrscheinlich Leerzeichen im JTextField – Ungeheuer

Antwort

0

Wenn jTextField1 nicht nur Zahlen enthält, können Sie alle Ziffern so entpacken:

Pattern p = Pattern.compile("-?\\d+"); 
    Matcher m = p.matcher(jTextField1.getText()); 
    List<Integer> numbers = new ArrayList<>(); 
    while (m.find()) { 
     numbers.add(Integer.parseInt(m.group())); 
    } 

dann die Zahlen fassen:

int sum = 0; 
    for (Integer number : numbers) 
     sum += number; 
+0

danke Sir, Sie waren sehr hilfreich ... Ich habe nur die Liste geändert: Liste numbers = new ArrayList <>(); zu ArrayList numbers = new ArrayList <>(); und es funktioniert .... danke Jungs –

+0

Oh, das ist großartig! Ich dachte nur, du würdest diese Antwort vielleicht als richtig akzeptieren wollen;) – eparvan

0

Wenn Sie garantieren können, dass die JTextField enthält nur Eingaben, die in Ints geparst werden können, z keine Buchstaben oder Symbole, dann ist das einzige mögliche Problem ein Leerzeichen zwischen Ihren Zahlen. Ich würde vorschlagen, dass Sie gehen Sie zu der Pattern API und suchen Sie nach Zeichen, die Whitespace erkennen können und gehen Sie dann zu String API und finden Sie eine Methode, die eine String basierend auf einer Eingabe regulären Ausdruck (Regex) teilen. Dann von dort aus können Sie einfach die Aufteilung String in int s analysieren und Ihre Summe erhalten. Zum Beispiel:

String a = jTextFieldName.getText(); 
String[] storage = a.someSplittingMethod("whitespace regex"); 
int sum = 0; 
for(int c = 0; c < storage.length; c++) 
    sum += Integer.parseInt(storage[c]); 
Verwandte Themen