[英]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.