java程序将偶数加到1

时间:2014-04-15 09:12:47

标签: java

我需要帮助做一个程序,甚至将整数加到1

我需要计算机才能计算出1 + 3 + 7 + 13 + 21 .... + n

n是用户想要的任何内容

顺序是每个偶数加起来,所以例如,你从1开始加2,得到3,然后加3加4,得到7,然后加7加6,得到13等等直到你到达。

我有一个完整的猜测

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Odd4 extends JFrame implements ActionListener {

    private JButton button;
    private JPanel panel;


    public static void main(String [] args) {
        Odd4 frame = new Odd4();
        frame.setSize(100, 100);
        frame.createLine();
        frame.show();
    }    
    private void createLine() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container window=getContentPane();
        window.setLayout (new FlowLayout());

        button = new JButton("OK");
        window.add(button);
        button.addActionListener(this);

    }
    public void actionPerformed(ActionEvent event) {
        int n;
        int sum = 0; 
        int i;
        int s = 1;
        String nString;
        nString = JOptionPane.showInputDialog("n:");
        n = Integer.parseInt(nString);
        for (i = 1; i <= n; i ++){
            if (i%2 == 0)

        do {
            j=j+i;
            sum = sum + j;
        }
        while (j <= n);      
     }
        JOptionPane.showMessageDialog(null, "Total is: " + sum);
 }

6 个答案:

答案 0 :(得分:0)

偶数可以写成2i,奇数可以写成2i + 1。

所以我不确定你的问题,但为了做总和你做一个循环增加我和总和,直到你的数字达到n:

修改:正确(总和开始为1并添加偶数):

   i = 0;
   sum = 1;
   while (2*i <= n){ // or 2*i +1 for odd

          sum += 2*i;
          i++;
   }

编辑2:正确答案 公共类HelloWorld {

 public static void main(String []args){

     int i=0;
     int n=7;
     int sum=1;
     int total = 0;
     while (sum < n){ // or 2*i +1 for odd

      sum += 2*i;
      total += sum;
      i++;
    }

     System.out.println(total);
   }
}

答案 1 :(得分:0)

你实际上并不需要循环来解决这个问题。

每个术语是1加上偶数的总和,例如1,1 + 2,1 + 2 + 4,1 + 2 + 4 + 6.

偶数之和为x*(x+1),加1为n^2 + n + 1

然后你要总结这些术语。

平方和为n*(n+1)*(2*n+1)/6

数字之和为n*(n+1)/2

1,(n + 1)次之和为n+1

解决方案是

n*(n+1)*(2*n+1)/6 + n*(n+1)/2 + n + 1

(2*n^3 + 7*n^2 + 10*n + 6)/6

e.g

1 + 3 + 7 + 13 + 21 = 45

21是第4个任期

(2*4^3 + 7*4^2 + 10*4 + 6)/6 = 45

使用公式并查看差异和差异的差异

term    sum   value   even
 0        1     1       
 1        4     3       2   
 2       11     7       4   2
 3       24     13      6   2
 4       45     21      8   2
 5       76     31      10  2
 6      119     43      12  2
 7      176     57      14  2
 8      249     73      16  2
 9      340     91      18  2
10      451     111     20  2

答案 2 :(得分:0)

很确定你想要这样的东西:

public static void main(final String[] args) {
    long total = 1;
    for( int i = 0; i < 10; i++ ) {
        total += (2*i);
        System.out.println(total);
    }
}

在我的测试中打印出来:

  

1

     

3

     

7

     

13

     

21

     

31

     

43

     

57

     

73

     

91

编辑:添加条款的解决方案

public static void main(final String[] args) {
    long total = 0;
    long term = 1;
    for( int i = 0; i < 5; i++ ) {
        term += (2*i);
        total += term;
        System.out.println("Term " + i + " is " + term);
        System.out.println("Current Total is " + total);
    }
}
  

第0项是1

     

当前总数为1

     

第1项是3

     

当前总数为4

     

第2学期是7

     

当前总数为11

     

第3学期是13

     

当前总数为24

     

第4学期是21

     

当前总数为45

编辑:在Ideone上添加了完整的解决方案

根据评论中OP的要求,我在Ideone中整合了一个完整的解决方案。 It's here!

答案 3 :(得分:0)

这会有帮助吗?

int a[];
int i=0,f=1,a=2.sum=0;
while(f<=n)
{
 a[i]=f;
 f=f+a;
 a=a+2;
 i++;
}

for(int j=0;j<a.length;j++)
{
 sum+=a[j];
}

答案 4 :(得分:0)

条款可以写成term

  • i=0
  • i=1
  • i=3
  • i=3
  • i=3
  • ...

因此,您需要在这些字词小于用户输入n时对它们求和:

int i=0, n = userInput, term;
int sum=0;
while((term = (i*(i+1)+1)) < n) {
    sum+=term;
    i++;
}

您可以在this ideone

中看到它正常工作

答案 5 :(得分:0)

这就是我想要的: -

sumofEven 会在偶数位置为您提供数字总和。

public class Sample {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    long n =21 ;
    int i= 0;
    long sumofEven =0;
    long sumofAll =1;
    while(sumofAll <= n){
        sumofAll = (long) (sumofAll + 2*i);
        System.out.println("->"+sumofAll);
        if((i+1) % 2 == 0){
            sumofEven = sumofEven + sumofAll;
        }
        i++;
    }
    System.out.println("sumofAll Numbers : "+sumofAll +"\nSum of no at event place : "+sumofEven);
}

}