-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

ループで宣言することはできませんsum。その場合、それはそのメソッドに対してローカルです。

于 2013-03-15T04:50:57.297 に答える
0

これは、スコープを制限するステートメントsum内で「作成」しているためです。ブロック内で作成され、次の閉じ中括弧で破棄されます。ifif

int sum;ブロック内のこれらの 2 行を取り除き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 に答える
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 に答える