我对以下代码有疑问:
class Program
{
public static void Progress(ProgressEventArgs e)
{
int result = e.getPartialResult;
int stack_value = e.getValue ;
double max = System.Convert.ToDouble(numbers[j]);
System.Convert.ToDouble(stack_value);
double percent = (stack_value / max) * 100;
Console.CursorLeft = 18;
Console.Write(result + " ");
Console.CursorLeft = 46;
Console.Write(System.Convert.ToInt32(percent) + "% ");
}
public static void Calculate(int number, int time=0)
{
Factorial Fact = new Factorial();
Fact.Progression += new Factorial.ProgressEventHandler(Progress);
Console.Write("\n" + "Partial results : ");
Console.CursorLeft = 35;
Console.Write("Progress : ");
int Result = Fact.CalculateFactorial(number, time);
Console.WriteLine(" ");
Console.WriteLine("The factorial of " + number + " is : " + Result);
Console.ReadLine();
}
static int j;
static int[] numbers;
public static void Main(string[] args)
{
int i=0;
bool ok = false;
numbers = new int[10];
Console.Write("Please insert wait time (0,1 or 2) : ");
int time = int.Parse(Console.ReadLine()) * 1000;
Console.Write("Please insert a number : ");
do
if (Console.ReadLine() != "")
{
i++;
numbers[i] = int.Parse(Console.ReadLine());
}
else
{
ok = true;
}
while (ok == false);
for (j = 1; j <= i; j++)
{
Calculate(numbers[j],time);
}
}
}
所以这里的情况有点奇怪......它似乎来自 if(Console.Readline()!="") 条件。
所以这个程序应该计算几个数字的阶乘。我给它一个延迟时间,以便通过百分比显示堆栈进度。
如果我输入一个随机时间并仅插入两个值,则程序将起作用,但仅适用于第一个数字。如果我输入超过 2 个数字,我将得到未处理的 FormatException。
现在,如果我用 if(numbers[i]!=10) 替换条件,该程序将适用于任意数量的值,但 10!必须计算。
我该如何处理这个问题?我错过了一些明显的东西吗?提前致谢!