【问题标题】:Store JTextField text into array and sum - Java将 JTextField 文本存储到数组中并求和 - Java
【发布时间】:2016-12-25 19:41:32
【问题描述】:

我想以某种方式将 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 数组中。

标签: java arrays jtextfield


【解决方案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,因为子字符串现在返回两个字符而不是一个。

【讨论】:

  • 不,你应该像这样解析: Integer.parseInt(input.substring(i, i+1));
  • @DontKnowMuchButGettingBetter 抱歉。在手机上发送了那个答案,所以不小心把那部分漏掉了。更新
  • 我怎样才能让它也适用于负数?
  • 您需要有一个 if 语句来检查是否有破折号 (-) 表示负数。如果有破折号,请使用 'substring(i, i+2)' 以便将破折号和数字一起解析。
  • 你能给我一个代码吗?看来我无法让它工作。
猜你喜欢
  • 2013-11-19
  • 2014-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多