我这里的代码有问题。我试图找到3和5到1000的所有倍数,并将它们全部加起来,最后当我试图输出总和时,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);
}
}
Java有块作用域,这意味着在{}
s(大括号)之间声明的sum
在外部不可见。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);
}
}
不能在循环中声明sum
。
这是因为你在if
语句中"创建"sum
,这限制了它们的范围-它们是在if
块中创建的,并在下一个结束括号中销毁。
去掉if
块中的那两行int sum;
,并将其放在函数的顶部(相当无用的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);
}
}
你已经在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);
}
}