1

我在静态方法中无法正确获取 for 循环,因此我可以获得两个端点之间偶数的总和并将总和返回给 main 方法。怎么做呢?

import java.util.Scanner;

public class Calculate {



public static void main(String[] args) {

    Scanner keyboard = new Scanner(System.in);

    int num1, num2;

    System.out.print("Enter two integers: ");
    num1 = keyboard.nextInt();
    num2 = keyboard.nextInt();

    String input;
    System.out.println("Enter a string: ");
    input = keyboard.next();



    if(input.equals("add"))
    {
        while(num1%2==0 && num1<num2)
        {
            int sum;
            sum = add(num1, num2);
            System.out.print("The sum of two integers is: " + sum);
            System.exit(0);
        }
    }
    else if(input.equals("multiply"))
    {
        int product;
        product = multiply(num1, num2);
        System.out.print("The product of two integers is: " + product);
    }
    else
    {
        System.out.println("Error, invalid input!");
    }




}   
public static int add(int number1, int number2)
{
    for(add = 0, add > 0, ++add)
    {   
    int result;
    result = number1 + number2;
    return result;
    }
}
public static int multiply(int number1, int number2)
{
    int result;
    result = number1 * number2;
    return result;
}

}
4

3 回答 3

2

为什么要使用循环等等。为什么不用公式?

偶数之和:

公式:N(N+1) 如何求 N = (第一个偶数 + 最后一个偶数)/2 - 1

示例:2+4+6+ ....... 100 N = (2+100)/2 - 1 = 50

前 50 个正偶数之和 = (50)(51) = 2550

http://www.beatthegmat.com/formula-for-consecutive-even-odd-integers-t17241.html

于 2013-09-23T15:44:12.313 回答
1

你应该重写add()方法,它没有意义。根据问题中的描述,这就是它的外观:

...所以我可以获得两个端点之间偶数的总和并将总和返回给 main 方法

public static int add(int number1, int number2) {
    int sum = 0;
    for (int i = number1; i <= number2; i++) {
        if (i % 2 == 0)
            sum += i;
    }
    return sum;
}

并像这样调用它main()

if (input.equals("add")) {
    int sum = add(num1, num2);
    System.out.print("The sum of even numbers is: " + sum);
}

请注意,您应该避免调用System.exit(0),尤其是不要在循环中调用它!它会在一次迭代后退出程序。

于 2013-09-23T15:43:16.900 回答
0

for您的方法中循环的问题add是您将 add 的值设置为零,然后检查 add 是否 > 0。

基本上,for循环扩展如下:

for (int a=0; a<15; a++)
{
  //Do Something
}

变成

  int a = 0;
  while (a < 15) {
    //Do Something
    a++;
  }

所以重写你的 for 循环,你得到

int add=0;
while (add > 0) {
  int result;
  result = number1 + number2;
  return result;
  ++add;
}

现在,抛开诸如循环return result;内部的位之类的问题for,或者你为什么在for这里使用循环,你至少可以看到你永远不会真正进入循环的编写方式。

于 2013-09-23T15:43:44.673 回答