繁体   English   中英

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

[英]Store JTextField text into array and sum - Java

我想以某种方式将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));

但是,当我尝试使用负数(例如“ -2”和“ -1”)数组时,它将存储4个值“ -2”,“ 2”,“-1”,“ 1”,并且最后的总和为0,但是它应该是-3。

不要立即解析它。 将输入存储到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数组中。 一旦到达第四个字符(第三个索引),该字符将为“-”,因此if语句将导致数字等于-3,因为子字符串现在返回两个字符,而不是一个字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM