【发布时间】:2014-06-02 22:31:59
【问题描述】:
我正在从事 Project Euler Problem 9,其中指出:
毕达哥拉斯三元组是三个自然数的集合,a
a^2 + b^2 = c^2
例如,3^2 + 4^2 = 9 + 16 = 25 = 52。
恰好存在一个毕达哥拉斯三元组,其 a + b + c = 1000。 找到产品 abc。
这是我到目前为止所做的:
class Project_euler9 {
public static boolean determineIfPythagoreanTriple(int a, int b, int c) {
return (a * a + b * b == c * c);
}
public static void main(String[] args) {
boolean answerFound = false;
int a, b, c;
while (!answerFound) {
for (a = 1; a <= 1000; a++) {
for (b = a + 1; b <= 1000; b++) {
c = 1000 - a - b;
answerFound = determineIfPythagoreanTriple(a, b, c);
}
}
}
System.out.println("(" + a + ", " + b + ", " + c + ")");
}
}
当我运行我的代码时,我得到了这个错误:
Project_euler9.java:32: error: variable a might not have been initialized
System.out.println("The Pythagorean triplet we're looking for is (" + a + ", " + b + ", " + c + ")");
注意:我为每个变量(a、b 和 c)都得到了这个,只是行号不同。
我认为当我将 a、b 和 c 声明为整数时,如果未赋值,则默认值为 0。
即使不是这样,在我看来他们都确实被分配了,所以我对这个错误有点困惑。
为什么会这样?
【问题讨论】:
-
除了 Oscar 写的内容之外,还有没有意义的 while 循环,因为在 for 循环完成之前你没有检查它 (
answerFound)...
标签: java initialization