我无法在序列中添加一组整数。我有三个变量:开始,数字和结束。 如果我“从5开始”,则将所有整数加至“数字”(例如9),然后从9减至整数“结束”(在本例中为-1):(5,9,-1 )=> 5 + 6 + 7 + 8 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0 +-1,然后我将打印结果:总计=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);
}
}
答案 0 :(得分:2)
在第二个循环中,您在每次迭代中都覆盖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);
答案 1 :(得分: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);
}
}
答案 2 :(得分:0)
您快到了。直到您的第二个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);
答案 3 :(得分:0)
在第二次迭代以获得总结果时,您应该从9的最大数到-1的最小数递减。这意味着大于或等于最小值。 ; >= ; --
。
!=
比较运算符用于比较两个值,结果始终是布尔类型。