将 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”和end 为 0,但应为 -3。
不要马上解析它。将输入存储到字符串中,使用循环使用 .substring() 遍历字符串中的每个字符,解析每个单独的数字并存储到一个 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
。前三个字符不等于“-”,因此它们将被简单地解析并存储到值数组中。一旦到达第 4 个字符(第 3 个索引),该字符将为“-”,因此 if 语句将导致数字等于 -3 作为子字符串现在 returns 两个字符而不是一个。
我想以某种方式将 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”和end 为 0,但应为 -3。
不要马上解析它。将输入存储到字符串中,使用循环使用 .substring() 遍历字符串中的每个字符,解析每个单独的数字并存储到一个 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
。前三个字符不等于“-”,因此它们将被简单地解析并存储到值数组中。一旦到达第 4 个字符(第 3 个索引),该字符将为“-”,因此 if 语句将导致数字等于 -3 作为子字符串现在 returns 两个字符而不是一个。