我试图运行这段代码,它运行而不会抛出错误,问题是它不执行循环我只是一个初学者,所以请



找到2和输入值之间的所有偶数整数的和?

import java.util.Scanner;
public static void main(String[] args) {
//initialization and declaration of variable
int input, sum = 0;
Scanner sc = new Scanner(System.in);
//Ask user to input data
System.out.print("Enter a number you want to limit up-to : ");
input = sc.nextInt();
//Conditions
if(input < 2) {
System.out.println("Error Occurred! Please, Enter a number greater or equal to 2. ");
}
for (int i = 2; i <= input; i++ ) {
if( i % 2 == 0) {
sum += i;
}
}
}

您应该打印结果sum。在主方法关闭之前添加System.out.println("the sum is:" + sum)。这是完整的代码:

import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//initialization and declaration of variable
int input, sum = 0;
Scanner sc = new Scanner(System.in);
//Ask user to input data
System.out.print("Enter a number you want to limit up-to : ");
input = sc.nextInt();
//Conditions
if(input < 2) {
System.out.println("Error Occurred! Please, Enter a number greater or equal to 2. ");
}
for (int i = 2; i <= input; i++) {
if( i % 2 == 0) {
sum += i;
}
}
System.out.println("the sum is:" + sum);
}
}

正如Tim Hunter所说,您可以将i的步长设置为2。因为如果i是偶数,则i+1必须是奇数。代码如下:

for (int i = 2; i <= input; i+=2) {
if( i % 2 == 0) {
sum += i;
}
}

我对所有答案都很满意,但如果你可以在恒定时间内完成,那么为什么要在线性时间内完成呢?通过使用一些数学,你根本不需要循环。但若你们只是倾向于循环,那个么就按照上面的答案去做。

如果你知道A.p,那么你可以很容易地看到你正在寻找A.p 的总和

正如你所说,你的第一个术语a=2。

您的公共差d=2仅为偶数。

最后一项l=用户输入=a+(n-1(d;

因此n=(l-a(d+1。和sum=n/2(a+l(。

注意在代码中,检查用户是否输入奇数作为输入,因为具有公共差2的a.P的最后一项不可能是奇数,如果用户输入奇数,则从中减去一,否则将其保留,

它就像一样简单

if(input % 2 == 0) input -=1;

numberOfTerms = (input - 2 )/2 + 1;//numberOfTerms为n;

sum = (numberOfTerms(2 + input))/2;//输入为l;

最新更新