-2

メインの配列の初期化でエラーが発生する理由がわかりません。変数 t を宣言し、その値をキーボードから取得しました。しかし、配列 n[ ] をサイズ t で初期化しようとすると、エラーが表示されます。plz ヘルプ

import java.io.*;
import java.math.BigInteger;

class smallfac
{
    static BigInteger fac(BigInteger x)
    {
        BigInteger z;
        if(x.equals(new BigInteger("1")))
            return x;
        else
        {
            z=x.multiply(fac(x.subtract(new BigInteger("1"))));
            return(z);
        }
    }

    public static void main(String args[])
    {
        InputStreamReader in=new InputStreamReader(System.in);
        BufferedReader br=new BufferedReader(in);
        try{
            int t=Integer.parseInt(br.readLine());
        }catch(IOException e){}
        int[] n=new int[t];
        for(int i=0;i<n.length;i++)
        {
            try
            {
                n[i]=Integer.parseInt(br.readLine());
            }catch(IOException e){}
        }
        for(int i=0;i<n.length;i++)
        {
            int x=n[i];
            BigInteger p = new BigInteger(Integer.toString(x));
            p=smallfac.fac(p);
            System.out.println(p);
        }
    }
}
4

4 に答える 4

4

それはスコーピングの問題です。ブロックint t内で宣言しますが、その後の値を使用しようとしますが、それは不可能です。の内部にのみ表示されます。trytttry

于 2013-04-26T11:15:03.543 に答える
0

int[] n=new int[t];<- ここtはスコープ内で定義されている必要があります。次のように変更できます。

        int t = 0;//or some default value
        try{
            t=Integer.parseInt(br.readLine());
        }catch(IOException e){}
        int[] n=new int[t];
于 2013-04-26T11:15:03.030 に答える