-1

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

4 回答 4

1

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);
    }
}
于 2013-03-15T04:50:36.747 回答
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);
    }
}
于 2013-03-15T04:54:28.377 回答
0

你不能在循环中声明sum。那么它是该方法的本地。

于 2013-03-15T04:50:57.297 回答
0

这是因为您在限制其范围sumif语句内“创建” - 它们在if块内创建并在下一个右括号中销毁。

去掉块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);
    }
}
于 2013-03-15T04:51:08.573 回答