编写一程序,接受一数字,并打印该数字的乘法表。使用异常确保仅输入数值并且所输入的数字大于0。我的程序如下:
using System;public class InvalidInput:ApplicationException
{
public InvalidInput():base("InvalidInput Exception")
{
}

public InvalidInput(string message):base(message)
{
}
}public class ExceptionDemo
{
public static void Main()
{
int userInput;

Console.WriteLine("请输入一个数字:");
try
{
userInput=Convert.ToInt32(Console.ReadLine());
if(userInput<=0)
{
throw new InvalidInput("必须输入一个正数!");
}
}
catch(FormatException e)
{
Console.WriteLine(e);
}
catch(InvalidInput e)
{
Console.WriteLine(e);
}
Console.WriteLine(userInput);
for(int i=userInput;i>=1;i--)
{
for(int j=userInput;j>=i;j--)
{
Console.Write("  "+j+"*"+i+"="+j*i);
}
Console.WriteLine();
}

}
}
编译后显示:Ph5Ex1.cs(37,21): error CS0165: 使用了未赋值的局部变量“userInput”我把userInput赋初值后程序通过  int userInput=0;
这里非要为userInput赋初值吗?
谢谢各位高手们了!

解决方案 »

  1.   

    呵呵,当然要初始化了,随便哪本.net书上都有说,多看看书吧
      

  2.   

    放到main()函数外面就不用了
    private int userInput;
      

  3.   

    强啊,还有人局部变量不赋值也拿来用的.....
    看来你还得仔细看看MSDN的说明啊~~
      

  4.   

    main函数是静态方法,在main函数中声明的变量当然要赋初值了。
    如果不想赋初值的话,就应该把变量放在main方法外面
      

  5.   

    这样就不要初始化using System;
    class Test
    {
    static void Main()
    {
    int divident=50;
    int userInput;
    int quotient=0;

    Console.WriteLine("输入一个数字:"); try
    {
    userInput=Convert.ToInt32(Console.ReadLine());
    quotient=divident/userInput;
    }
    catch(FormatException e)
    {
    Console.WriteLine(e);
    }
    catch(DivideByZeroException e)
    {
    Console.WriteLine(e);
    }

    Console.WriteLine("商为{0}",quotient);
    }
    }为什么这时又不用初始化,小弟初学不太懂,bombkey也不用这样打击吧。