这是我的代码:
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
作为我的最终答案。我不确定为什么我的答案是实际答案的十倍。
答案 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