Project Euler Number 2的问题:甚至Fibonacci数

时间:2015-12-30 17:12:24

标签: java algorithm

这是我的代码:

public static void main(String[] args) {
    int f=1;//first number
    int s=2;//second number
    int fin=0;//final answer
    int x;
    System.out.println("1\n2");
    for (x=3; x<4000000; x=f+s){
        System.out.println(x);
        f=s;
        s=x;
        if (x%2==0){
            fin+=x;
        }
    }
    System.out.println("Sum of all even number: "+fin+2);
}

出于某种原因,当实际答案为46137302时,我得到4613732作为我的最终答案。我不确定为什么我的答案是实际答案的十倍。

2 个答案:

答案 0 :(得分:4)

你偶然发现了java的精简字符串连接。以下作品:

System.out.println("Sum of all even number: " + (fin+2));

您必须明确地对数字求和。否则Java继续并从左到右对值进行求和:您的String +实际数字,给出"Sum of all even number: 4613730"之类的内容。然后它附加2给予"Sum of all even number: 46137302"。但是你想先对这些数字求和:你需要将它们包装在()中。

答案 1 :(得分:2)

字符串连接的工作方式。你必须使用()

举个例子:

int x = 15, y = 25;

System.out.println("The answer is :"+ x + y); // The answer is :1525
System.out.println("The answer is :"+ (x + y)); // The answer is :40