有没有办法在递增时添加整数然后在递减时添加整数?按顺序
Is there a way to add integers while incrementing and then while decrementing? in a sequence
我无法在序列中添加一组整数。我有三个变量:开始、数字和结束。
如果我从 5“开始”,然后将所有整数加到“number”(例如 9),然后从 9 递减到整数“end”(在本例中为 -1): (5,9,-1 ) => 5+6+7+8+9+8+7+6+5+4+3+2+1+0+ - 1 ,然后我将打印结果:total = 70. 我怎样才能做到这一点?
public class SequenceNumbers {
public static void main(String[] args) {
int start = 5;
int num = 9;
int end = -1;
int sum = 0;
for(int i = start; i <= num; i++)
{
// sum = sum + i;
sum += i;
}
int total = 0;
for ( int n = num; n != end; n--) {
total = (sum + (num - 1));
}
System.out.println("Result = " + total);
}
}
在第二个循环中,您在每次迭代中覆盖 total
。我会保持与第一个循环中相同的模式,并继续添加到 sum
。请注意,它应该以 num - 1
开头,因此您不会计算该数字两次:
int sum = 0;
for(int i = start; i <= num; i++) {
sum += i;
}
for ( int i = num - 1; i >= end; i--) {
sum += i;
}
System.out.println("Result = " + sum);
你快到了。你的所有代码都很好,直到你的第二个 for 循环中的这一行:
total = (sum + (num - 1));
这一行说“设置 total
等于 sum
加上比 num
少一”。那里有问题; sum
和 num
永远不会被 for 循环改变,所以实际上你的 for 循环什么都不做。不过,您已经很好地设置了 for 循环,并且给自己设置了变量 n
。您需要做的就是不断添加 sum
,并且每次添加 n
,如下所示:
sum += n;
然后在你的 println 中你可以使用 sum
而不是 total
,像这样:
System.out.println("Result = " + sum);
在总结果的第二次迭代中,您应该从最大值 9 到最小值 -1 递减。这意味着大于或等于最低值。 ; >= ; --
.
!=
比较运算符是比较两个值,结果总是布尔类型.
我猜你需要这个来练习?
但是如果你需要单线,这是一个可能的解决方案:
import java.util.*;
import java.util.stream.*;
public class MyClass {
public static void main(String args[]) {
;
int start = 5;
int num = 9;
int end = -1;
int total = Stream.concat(Stream.iterate(start, n -> n + 1).limit(num-start+1), Stream.iterate(num-1, n -> n - 1).limit(num-end)).mapToInt(Integer::intValue).sum();
System.out.println("Result = " + total);
}
}
我无法在序列中添加一组整数。我有三个变量:开始、数字和结束。 如果我从 5“开始”,然后将所有整数加到“number”(例如 9),然后从 9 递减到整数“end”(在本例中为 -1): (5,9,-1 ) => 5+6+7+8+9+8+7+6+5+4+3+2+1+0+ - 1 ,然后我将打印结果:total = 70. 我怎样才能做到这一点?
public class SequenceNumbers {
public static void main(String[] args) {
int start = 5;
int num = 9;
int end = -1;
int sum = 0;
for(int i = start; i <= num; i++)
{
// sum = sum + i;
sum += i;
}
int total = 0;
for ( int n = num; n != end; n--) {
total = (sum + (num - 1));
}
System.out.println("Result = " + total);
}
}
在第二个循环中,您在每次迭代中覆盖 total
。我会保持与第一个循环中相同的模式,并继续添加到 sum
。请注意,它应该以 num - 1
开头,因此您不会计算该数字两次:
int sum = 0;
for(int i = start; i <= num; i++) {
sum += i;
}
for ( int i = num - 1; i >= end; i--) {
sum += i;
}
System.out.println("Result = " + sum);
你快到了。你的所有代码都很好,直到你的第二个 for 循环中的这一行:
total = (sum + (num - 1));
这一行说“设置 total
等于 sum
加上比 num
少一”。那里有问题; sum
和 num
永远不会被 for 循环改变,所以实际上你的 for 循环什么都不做。不过,您已经很好地设置了 for 循环,并且给自己设置了变量 n
。您需要做的就是不断添加 sum
,并且每次添加 n
,如下所示:
sum += n;
然后在你的 println 中你可以使用 sum
而不是 total
,像这样:
System.out.println("Result = " + sum);
在总结果的第二次迭代中,您应该从最大值 9 到最小值 -1 递减。这意味着大于或等于最低值。 ; >= ; --
.
!=
比较运算符是比较两个值,结果总是布尔类型.
我猜你需要这个来练习? 但是如果你需要单线,这是一个可能的解决方案:
import java.util.*;
import java.util.stream.*;
public class MyClass {
public static void main(String args[]) {
;
int start = 5;
int num = 9;
int end = -1;
int total = Stream.concat(Stream.iterate(start, n -> n + 1).limit(num-start+1), Stream.iterate(num-1, n -> n - 1).limit(num-end)).mapToInt(Integer::intValue).sum();
System.out.println("Result = " + total);
}
}