Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java程序将偶数相加为1_Java - Fatal编程技术网

java程序将偶数相加为1

java程序将偶数相加为1,java,Java,我需要帮助做一个程序,将偶数整数相加到1 我需要电脑计算出1+3+7+13+21n n是用户希望它是什么 序列将每个偶数相加,例如,从1开始,加2,得到3,然后到3,再加4,得到7,然后到7,再加6,得到13,依此类推,直到n 我完全猜到了 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Odd4 extends JFrame implements ActionListener {

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

我需要电脑计算出1+3+7+13+21n

n是用户希望它是什么

序列将每个偶数相加,例如,从1开始,加2,得到3,然后到3,再加4,得到7,然后到7,再加6,得到13,依此类推,直到n

我完全猜到了

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);
 }
import java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
公共类Odd4扩展JFrame实现ActionListener{
私人按钮;
私人JPanel小组;
公共静态void main(字符串[]args){
Odd4帧=新Odd4();
框架。设置尺寸(100100);
frame.createLine();
frame.show();
}    
私有void createLine(){
setDefaultCloseOperation(关闭时退出);
容器窗口=getContentPane();
window.setLayout(新的FlowLayout());
按钮=新按钮(“确定”);
窗口。添加(按钮);
addActionListener(这个);
}
已执行的公共无效操作(操作事件){
int n;
整数和=0;
int i;
int s=1;
串串;
nString=JOptionPane.showInputDialog(“n:”);
n=整数.parseInt(nString);

对于(i=1;i),偶数可以写为2i,奇数可以写为2i+1

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

编辑:正确(总和从1开始加偶数):

i=0;
总和=1;

而(2*i你实际上不需要一个循环来解决这个问题

每项为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

e、 g

21是第四学期吗

(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

你肯定想要这样的东西:

public static void main(final String[] args) {
    long total = 1;
    for( int i = 0; i < 10; i++ ) {
        total += (2*i);
        System.out.println(total);
    }
}
publicstaticvoidmain(最终字符串[]args){
长期总计=1;
对于(int i=0;i<10;i++){
总数+=(2*i);
系统输出打印项次(总计);
}
}
在我的测试中,它打印出:

一,

三,

七,

十三,

二十一,

三十一

43

57

七十三

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);
    }
}
publicstaticvoidmain(最终字符串[]args){
长总计=0;
长期=1;
对于(int i=0;i<5;i++){
术语+=(2*i);
总数+=期限;
System.out.println(“术语“+i+”是“+Term”);
系统输出打印项次(“当前总计为”+总计);
}
}
术语0是1

目前的总数是1

第一学期是第三学期

目前的总数是4

第二学期是第七学期

目前的总数是11

第三学期是13

目前的总数是24

第四学期是21

目前的总数是45

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

根据评论中OP的要求,我用Ideone拼凑了一个完整的解决方案。

这会有帮助吗

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];
}
inta[];
int i=0,f=1,a=2。总和=0;

而(f术语可以这样写:

因此,当这些术语小于用户输入时,您需要求和:

int i=0, n = userInput, term;
int sum=0;
while((term = (i*(i+1)+1)) < n) {
    sum+=term;
    i++;
}
inti=0,n=userInput,term;
整数和=0;
而((项=(i*(i+1)+1))

你可以看到它在

中工作,我想这就是你想要的:-

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);
}
公共类示例{
/**
*@param args
*/
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
长n=21;
int i=0;
长sumofEven=0;
长sumofAll=1;


while(sumofAll,你的问题是什么?@user3533531我们有很多东西,但问题是什么?你是指奇数还是偶数?1,3,5 e.t.c是奇数。我的意思是你不断地增加偶数(以升序为1),你想计算(1+2)+(1+2+4)+(1+2+4+6)+(1+2+4+6)...请验证这个答案,如果它对你有帮助的话;)我不确定这是否正确,当我输入7时,显示的答案是16,但正确的答案是14公式是错误的(它是1+3+5+7+…而不是1+3+7+13+…)将2*i+1替换为2*1,然后开始求和为1;这仍然是错误的,因为当我输入7时,它得到了13,正确答案是11,这或多或少是我想要的,但我希望计算机将所有这些数字相加。你可以将这个数字相加,而不是打印它们;)这太神奇了!@user3533531我的第一个解决方案计算了术语,我添加了一个编辑,可以在计算过程中将术语相加。我想这就是您要查找的。@user3533531我不确定您的终止条件是什么。在中,我假设n是您要计算的术语数。因此,如果n=2,则会得到11。术语0是1,术语1是3,术语2是7,所以1+3+7=11不,n是最终的数字,所以如果n是7,你会做1+3+7,n不是你要计算的术语,t不是你要计算的术语,它是你达到的最终数字,例如,如果用户做了n7,计算机会做1+3+7@user3533531
n
是你定义的任何东西可以像Dan Temple那样叫它
i
。如果用户键入6,你会怎么做?n不是你计算的结果,而是最终的数字,例如,如果n是7,你会做1+3+7这是我做的,取一个l
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);
    }
}
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];
}
int i=0, n = userInput, term;
int sum=0;
while((term = (i*(i+1)+1)) < n) {
    sum+=term;
    i++;
}
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);
}