我的代码出现问题。我试图找到3和5的所有倍数,最多可以将它们全部加起来,最后当我尝试输出总和时,java给了我一个找不到的符号'错误。任何人都可以弄清楚这里有什么问题吗?
public class Problem1
{
public static void main(String []args)
{
//int sum1;
//int sum2;
int finalSum;
for(int i = 0; i < 1000; i++)
{
if(i % 3 == 0)
{
int sum;
sum += i;
}
else if(i % 5 == 0)
{
int sum;
sum += i;
}
}
System.out.println(sum);
}
}
答案 0 :(得分:1)
Java有block scoping,,这意味着在sum
s(大括号)之间声明的{}
在外面不可见。在sum
循环之外声明for
一次,。
public class Problem1
{
public static void main(String []args)
{
int sum = 0;
for(int i = 0; i < 1000; i++)
{
if(i % 3 == 0)
{
sum += i;
}
else if(i % 5 == 0)
{
sum += i;
}
}
System.out.println(sum);
}
}
答案 1 :(得分:0)
你不能在循环中声明sum
。然后它就是那个方法的本地。
答案 2 :(得分:0)
这是因为你在sum
语句中“创建”if
限制了它们的范围 - 它们是在if
块内创建的,并在下一个右括号中被销毁。< / p>
摆脱int sum;
块内的那两条if
行并将其放在函数的顶部(相当无用的finalSum
)。或者只是在任何地方使用 finalSum
。
您还可以将if
条件合并为更短的代码:
public class Problem1
{
public static void main(String []args)
{
int finalSum = 0;
for(int i = 0; i < 1000; i++)
if((i % 3 == 0) || (i % 5 == 0))
finalSum += i;
System.out.println(finalSum);
}
}
答案 3 :(得分:0)
你已经在if / else中定义了变量sum,这限制了变量的范围。System.out.print()
语句超出了sum
的范围,因此你得到了错误。
public class Problem1
{
public static void main(String []args)
{
int sum=0;
for(int i = 0; i < 1000; i++)
{
if(i % 3 == 0)
{
sum += i;
}
else if(i % 5 == 0)
{
sum += i;
}
}
System.out.println(sum);
}
}