将JTextField文本存储到数组和sum中 - Java

时间:2016-12-25 19:41:32

标签: java arrays jtextfield

我想以某种方式将JTextField中的文本存储到数组中然后求它。

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());
  }
});

接下来我该怎么办?如何从那里分割文本,例如,如果用户输入是" 256"我认为它应该存储在数组中,如" 2"," 5"," 6"。

编辑: 在Jake Miller的帮助之后我得到了:

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));

但是当我尝试使用像#34; -2&#34;和&#34; -1&#34; values数组存储4个值&#34; -2&#34;,&#34; 2&#34;,&#34; -1&#34;,&#34; 1&#34;最后的总和是0,但它应该是-3。

1 个答案:

答案 0 :(得分:1)

不要马上解析它。将输入存储到String中,使用循环使用.substring()遍历String中的每个字符,并解析每个单独的数字并存储到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));
}

如果输入256,则数组将具有3个值:2,5和6

修改

对于负数,您需要检查字符“ - ”,因为它表示负数。然后,您将使用substring(i, i+2)取两个字符而不是一个字符( - 和数字本身)。您也不需要阵列。您可以直接将您解析的每个数字添加到总和中。你也应该使用while循环并自己增加i。如果你找到一个负数,你使用2个字符,这意味着你需要将i递增2而不是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;
    }

一个例子:

用户输入125-35。前三个字符不等于“ - ”,因此它们将被简单地解析并存储到values数组中。一旦到达第4个字符(第3个索引),该字符将为“ - ”,因此if语句将导致number等于-3,因为子字符串现在返回两个字符而不是一个字符。