我正在尝试编写一个程序来提示用户输入大于或等于 2 的
int
。然后,程序必须根据此输入计算并打印 2 和输入的 int
之间所有偶数整数的总和
。如果输入的 int
低于 2,它还必须生成一条错误消息。我已经为它编写了一个可行的程序,但我只是想知道你们是否可以找到更好的方法来做到这一点?我确信有,但我似乎找不到一种有效的方法!
这就是我所做的:
import java.util.Scanner;
public class EvenSum {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Enter an integer which is above 2.");
int number = scan.nextInt();
int divnum = number / 2;
int divnum2 = divnum + 1;
int sumofeven = divnum * divnum2;
if(number >= 2)
System.out.println("The sum of the even integers between the number is "+
sumofeven);
else
System.out.println("Invalid number entered.");
}
}
为什么要用循环来做呢?其实你可以算一下。设 X 为他们选择的数字。设 N 为最大偶数 <= X. (N^2+2*N)/4 will be your answer.
注意:请勿在真实上下文中使用此示例,它无效。它只是展示了一种更干净的方法。
// Check the input.
if (number >= 2)
System.out.println(sum(number));
}
// Will find the sum if the number is greater than 2.
int sum(int n) {
return n == 2 ? n - 2 : n % 2 == 0 ? n + sum(n - 2) : sum(n - 1);
}
希望这有帮助。哦,顺便说一句,方法
sum
递归地添加数字。
抱歉,但我必须稍微编辑一下答案。可能还有改进的空间。
为什么要使用循环?您正在计算以下各项的总和:
2 + 4 + ... n, where n is a positive even number.
这是一个非常简单的算术级数。
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Enter an integer which is above 2.");
int number = scan.nextInt();
if (number >= 2) {
int sumofeven = 0;
for (int i = 2; i <= number; i += 2) {
sumofeven += i;
}
System.out.println("The sum of the even integers between the number is " + sumofeven);
} else {
System.out.println("Invalid number entered.");
}
}