2017-10-21 231 views
-1

我必须创建一个程序,从用户获取范围,然后添加范围中的每个偶数并打印到屏幕。我正在努力弄清楚如何在for循环中添加每个数字。如果范围是5到10,屏幕应该打印24作为答案。以下是我的代码。如何使用for循环在范围中添加偶数

//worksheet 4 - question 3 
//asks user for a range. Adds even numbers in range and prints their sum. 

import java.util.Scanner; 

class P3LoopRange 
{ 
    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 

     int initial, finalValue; 

     System.out.print("Enter a start value: "); 
     initial = input.nextInt(); 

     System.out.print("Enter a second value: "); 
     finalValue = input.nextInt(); 

     while (finalValue <= initial) 
     { 
      System.out.println("Second value must be larger than start value."); 
      System.out.print("Enter a second value: "); 
      finalValue = input.nextInt(); 
     } 

     int range = finalValue - initial; 

     int x = 0 

     for (int i = initial; i <= finalValue; i++) 
     { 
      if (i%2==0) 
      { 
       int x = x+i; 

      } 
     } 
     System.out.printf(x); 
    } 
} 
+0

不要在if语句再次x声明。 – Tacolibre

回答

1

您声明了两次x局部变量。
你不能这样做,因为重复的局部变量是不合法的。
此外,在循环中声明它会在每次迭代时被覆盖。
所以,只要在循环之前声明它,它应该没问题。

int x = 0; 

for (int i = initial; i <= finalValue; i++) 
{ 
    if (i%2 == 0) 
    { 
     x = x + i; 

    } 
} 
+0

谢谢。我已经尝试过,但仍然收到退出代码为1的错误。我的最终打印语句是否在正确的位置? –

+0

这是在正确的地方。它是用'printf()'编译的吗?它不应该。你应该使用'print()'而不是'printf()'来打印一个'int'。 – davidxxx

+0

我不知何故删除了一个分号。谢谢你的帮助。 –

1

变化int x = x+i;x=x+i;。这里您每次重新初始化x

1

问题是:int x = x+i;

只是删除int,你的问题就解决了