写一个方法来计算前n个奇数之和

时间:2017-09-21 08:20:03

标签: java loops sum

首先让我说我是一个很新的编程,这是我开始以来的第二个星期,如果你看到任何不良做法或代码中的错误,请接受我的道歉。

我想打印前n个奇数的总和。但到目前为止,我只能将奇数的总和达到给定的数字。善意的帮助。

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

    System.out.print("Please enter the number : ");
    int num1 = userInput.nextInt();

    int sum = sumOfOdd(num1);
    System.out.println("sum of first " +num1 + " odd numbers is " + sum);

    userInput.close();
}

static int sumOfOdd(int num)
{
    int sum = 0;
    for (int i = 0; i <= num; i++)
    {
        if(i % 2 != 0)
        {
            sum += i;
        }
    }
    return sum;
}
}

8 个答案:

答案 0 :(得分:9)

您根本不必使用循环

static int sumOfOdd(int num) {
    return num*num;
}

对于任何算术级数,数字之和由,

给出
  

的Sn = 1/2×N [2α+(N-1)×d]

其中,

Sn = n个数的总和

n = n个数字

a = A.P的第一任期

d = A.P

的常见差异

使用上面的公式,我们可以导出这个快速公式来计算前n个奇数的总和,

  

Sn(奇数)=n²

答案 1 :(得分:3)

尝试此操作时,它使用for loop递增2,仅考虑奇数。

import java.util.Scanner;

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

    System.out.print("Enter the value of n: ");
    int n = scanner.nextInt();

    System.out.println("The sum of the first " + n + " odd numbers is: " + sumOfOddNumbers(n));
  }

  public static int sumOfOddNumbers(int n) {
    int sum = 0;
    for(int i = 1; i < n*2; i+=2) {
      sum += i;
    }
    return sum;
  }
}

使用示例:

Enter the value of n:  5
The sum of the first 5 odd numbers is: 25

答案 2 :(得分:2)

试试这个:

static int sumOfOdd(int num) {
    int sum = 0;
    for (int i = 0; i < num; i++){
        sum += i*2+1;
    }
    return sum;
}

它总结了所有奇数,直到达到极限。

使用i*2+1,您将获得下一个奇数。然后将它添加到总和中。

使用System.out.println(sumOfOdd(4));进行测试并获得预期结果16(1 + 3 + 5 + 7)

答案 3 :(得分:1)

将计数器更改为向总和值添加奇数的次数...

static int sumOfOdd(int num) {
    int sum = 0;
    int i = 0;
    int count = 0;
    do {
        if(i % 2 != 0) {
            sum += i;
            count++;
        }
        i++;
    } while (count < num);
    return sum;
}

甚至更干净:

static int sumOfOdd(int num) {
    int sum=0;
    for (int i=1;i<num*2;i+=2) {
        sum=sum+i;
    }
    return sum;
}

答案 4 :(得分:0)

您应该计算您添加了多少数字,并在条件中检查您总和的数字是否小于或等于您的数字。只需在for循环中添加计数器并将条件设置为:count <= num,它应该可以正常工作。
每次向总和中添加数字时,计数都会增加count++
代码假设如下:

static int sumOfOdd(int num)
{
    int sum = 0;
    int count = 0;
    for (int i = 0, count= 0; count <= num; i++)
    {
        if(i % 2 != 0)
        {
            sum += i;
            count++;
        }
    }
return sum;
}

我还没检查过,但它应该是正确的

答案 5 :(得分:0)

由于您不知道需要多少循环周期,因此您必须更改 for 循环的退出条件。 或者您可以使用 while 循环利用相同的退出条件。

static int sumOfOdd(int num){
  int sum = 0;
  int counter = 0;
  int currentNumber = 0;
  while (counter<num){
      if(currentNumber % 2 != 0){
          sum += currentNumber;
          counter++;
      }
      currentNumber++;

  }
  return sum;
}

答案 6 :(得分:0)

以下是您要使用的完整代码:

public class YourClass {

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

        System.out.print("Please enter the number : ");
        int num1 = userInput.nextInt();

        int sum = sumOfOdd(num1);
        System.out.println("sum of first " +num1 + " odd numbers is " + sum);

        userInput.close();
    }

    static int sumOfOdd(int num)
    {
        int counter = 0;
        for (int i = 0;; i++)
        {
            int sum = 0;
            if(i % 2 != 0)
            {
                counter++;
                sum += i;
            }
            if(counter == num) return sum;
        }
    }
}

答案 7 :(得分:0)

另一种选择。

static int sumOfOdd(int num) {
    int sum = 0;
    int last = 2*num-1;
    for (int i = 1; i <= last; i+=2){
        sum += i;
    }
    return sum;
}

显然return num*num;是最有效的,但如果您不得不使用循环,则此方法会避免循环内的*

这将是一个微小的(微小的)比以下更有效:

    for (int i = 0; i < num; ++i){
        sum += 2*i+1;
    }