0

たとえば、階乗を表示しようとしています(5の階乗は5 * 4 * 3 * 2 * 1です)

Console.Write(i + " x ");階乗のメソッドを使用していますが、コード内の行を受け入れません。

どんな助けでも素晴らしいでしょう。これが私のコードです。

//this method asks the user to enter a number and returns the factorial of that number
static double Factorial()
{
    string number_str;
    double factorial = 1;

    Console.WriteLine("Please enter number");
    number_str = Console.ReadLine();

    int num = Convert.ToInt32(number_str);

    // If statement is used so when the user inputs 0, INVALID is outputed
    if (num <= 0)
    {
        Console.WriteLine("You have entered an invalid option");
        Console.WriteLine("Please enter a number");
        number_str = Console.ReadLine();

        num = Convert.ToInt32(number_str);
        //Console.Clear();
        //topmenu();
        //number_str = Console.ReadLine();
    }

    if (num >= 0)
    {
        while (num != 0) 
        {
            for (int i = num; i >= 1; i--)
            {
                factorial = factorial * i;
            }
            Console.Write(i + " x ");

            Console.Clear();
            Console.WriteLine("factorial of " + number_str.ToString() + " is " + factorial);
            factorial = 1;
            Console.WriteLine("(please any key to return to main menu)");
            Console.ReadKey();
            Console.Clear();
            topmenu();
        }
    }

    return factorial;
}

ありがとうございました!

4

2 に答える 2

1

ここに考慮すべき解決策があります

public static void Main()
{
    Console.WriteLine("Please enter number");

    int input;
    while (!int.TryParse(Console.ReadLine(), out input) || input <= 0)
    {
        Console.WriteLine("You have enter an invald option");
        Console.WriteLine("Please enter number");
    }

    Console.Write("Factorial of " + input + " is : ");

    int output = 1;
    for (int i = input; i > 0; i--)
    {
        Console.Write((i == input) ? i.ToString() : "*" + i);
        output *= i;
    }
    Console.Write(" = " +output);
    Console.ReadLine();
}

int.TryParse() はあなたにとって有益なので、ユーザーが整数以外を入力してもプログラムはクラッシュしません

また、整数以外のものが必要になる場合もあります。階乗は非常に急速に大きくなり、16 を超えると間違った結果が返されます。

于 2013-10-24T17:46:47.237 に答える