我试图在一个列表中添加整数和一行。问题是在字符串中添加整数会返回一个对象本身,而不是整数的总和。
例如,我有字符串3 4 6 2 7 4
。
我想像这样添加所有数字:3 + 4 + 6 + 2 + 7 + 4
= 26
。我试过了:
for (String number : after.split ("\\s+")) {
int v = Integer.parseInt (number);
System.out.println (v);
numbers.add (v);
}
而不是26,我得[3 4 6 2 7 4]
。如何获得整数之和而不是对象的结果?
答案 0 :(得分:4)
这个怎么样
int sum = 0; //Declare a variable to keep track of your sum
for (String number : after.split ("\\s+")) {
int v = Integer.parseInt (number);
System.out.println (v);
numbers.add(v);
sum += v; //Each iteration of your loop add the current int to your sum
}
System.out.println(sum);
目前,您只是将每个int添加到列表中。如果您想要列表中的这些值的总和,您需要另一个变量来表示这一点。在我的例子中,我使用了一个名为sum的int变量。每次在列表中添加int时,您也会将其添加到当前的总和值中。
答案 1 :(得分:2)
添加到列表与添加整数值不同。您正在寻找
numbers +=v;
其中int值中的数字,并将循环中的每个值v
加起来。
int numbers =0;
for (String number : after.split ("\\s+")) {
int v = Integer.parseInt (number);
System.out.println (v);
numbers +=v;
}
System.out.println(numbers);
并且
numbers +=v;
是numbers = numbers+v
答案 2 :(得分:1)
使用Java 8和streams,您将能够在一行中执行此操作:
int sum = Arrays.stream("1 2 3".split("\\s+")).mapToInt(Integer::parseInt).sum();
答案 3 :(得分:0)
我会像这样使用StringTokenizer
public static long add(String in) {
long acc = 0;
StringTokenizer st = new StringTokenizer(in);
while (st.hasMoreTokens()) {
acc += Integer.valueOf(st.nextToken().trim());
}
return acc;
}
public static void main(String args[]) throws IOException {
System.out.println(add("3 4 6 2 7 4"));
}
输出26。