在for循环中找不到符号编译错误



我这里的代码有问题。我试图找到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);
    }
}

最新更新