static void Main(string[] args)
        {
          
                try
                {                    int a, b, c, d;
                    Console.WriteLine("请输入四个整数");
                    Console.WriteLine("请输入第一整数");
                    a =Convert .ToInt16 ( Console.ReadLine());
                    Console.WriteLine("请输入第二整数");
                    b = Convert.ToInt16(Console.ReadLine());
                    Console.WriteLine("请输入第三整数");
                    c = Convert.ToInt16(Console.ReadLine());
                    Console.WriteLine("请输入第四整数");
                    d = Convert.ToInt16(Console.ReadLine()); 
                    Number n = new Number();
                    int[] list = new int[4];
                    list[0] = a;
                    list[1] = b;
                    list[2] = c;
                    list[3] = d;
                    n.GetMin(list);
                    n.GetMax(list);
                }
                catch
                {
                     int a, b, c, d;
                    Console.WriteLine("请输入四个整数");
                    Console.WriteLine("请输入第一整数");
                    a =Convert .ToInt16 ( Console.ReadLine());
                    Console.WriteLine("请输入第二整数");
                    b = Convert.ToInt16(Console.ReadLine());
                    Console.WriteLine("请输入第三整数");
                    c = Convert.ToInt16(Console.ReadLine());
                    Console.WriteLine("请输入第四整数");
                    d = Convert.ToInt16(Console.ReadLine()); 
                    Number n = new Number();
                    int[] list = new int[4];
                    list[0] = a;
                    list[1] = b;
                    list[2] = c;
                    list[3] = d;
                for (int i=0;i<4;i++)
                {
                    try
                    {
                        Convert.ToInt16(list[i]);
                    }
                    catch
                    {
                        Console.WriteLine("请输入");
                    }
                }
                }
        }
我想输入四个整数,取最大值和最小值,想通过键盘输入,如果输入的不是整数提示重新输入,如果第一个错了,提示输入第一个,如果第二个错了提示输入第二个,但是我的代码总是重头开始,而且捕捉不到异常,请问高手怎么做,谢谢

解决方案 »

  1.   

    用try-catch这样写,肯定只能从头开始了。
    int a, b, c, d;
    Console.WriteLine("请输入四个整数");
    Console.WriteLine("请输入第一整数");
    while(!int.TryParse(Console.ReadLine(),out a)
    {
      Console.WriteLine("输入不正确,请重新输入第一整数");
    }
    Console.WriteLine("请输入第二整数");
    while(!int.TryParse(Console.ReadLine(),out b)
    {
      Console.WriteLine("输入不正确,请重新输入第二整数");
    }
    Console.WriteLine("请输入第三整数");
    while(!int.TryParse(Console.ReadLine(),out c)
    {
      Console.WriteLine("输入不正确,请重新输入第三整数");
    }
    Console.WriteLine("请输入第思整数");
    while(!int.TryParse(Console.ReadLine(),out d)
    {
      Console.WriteLine("输入不正确,请重新输入第四整数");
    }
    int[] list = new int[4];
    list[0] = a;
    list[1] = b;
    list[2] = c;
    list[3] = d;
    n.GetMin(list);
    n.GetMax(list);
      

  2.   

    你在catch后面貌似少了个(Exception e)
    catch(Exception ex)
    {
    int a, b, c, d;
    Console.WriteLine("请输入四个整数");           【1】
    Console.WriteLine("请输入第一整数");           【2】
    a =Convert .ToInt16 ( Console.ReadLine());
    Console.WriteLine("请输入第二整数");           【3】
    b = Convert.ToInt16(Console.ReadLine());
    Console.WriteLine("请输入第三整数");
    c = Convert.ToInt16(Console.ReadLine());
    Console.WriteLine("请输入第四整数");           【4】
    d = Convert.ToInt16(Console.ReadLine()); 
    Number n = new Number();
    int[] list = new int[4];
    list[0] = a;
    list[1] = b;
    list[2] = c;
    list[3] = d;
    for (int i=0;i<4;i++)
    {
    try
    {
    Convert.ToInt16(list[i]);
    }
    catch
    {
    Console.WriteLine("请输入");
    }
    }
    }
    就是说当Convert的方法出现异常的的话,你的catch语句总是按【1】,【2】,【3】,【4】,输出你在catch里面已经写了这个顺序了。
    比较好的方法就是输入一个数是检查一次输入是否是整数,如果不是就要用户重新输入,这样的话。就不用考虑顺序了。
      

  3.   

    捕捉不到异常那就用try catch如果碰到不符合要求的 重新输入要用循环,可以用while
      

  4.   

    int Num = 4; 
    int[] list = new int[Num];
    Console.WriteLine("请输入{0}个整数",Num);
    for(int i = 0; i < Num; i++)
    {
        try
        {
            Console.WriteLine("请输入第{0}整数",i+1);
            list[i] = (int)Console.ReadLine();
        }
        catch(Exception)
        {
            Console.WriteLine("输入并不是整数");
            i--;
        }
    }
      

  5.   

    编译无法通过,
    list[i] = (int)Console.ReadLine();【错误处】
    环境Visual2008 SP2
    无法将“String”转化成“int”。改成这样就可以了
    list[i] = Convert.ToInt16(Console.ReadLine());
      

  6.   

    int Num = 4;
                double[] list = new double[Num];
                Console.WriteLine("请输入{0}个整数", Num);
                for (int i = 0; i < Num; i++)
                {
                    try
                    {
                        Console.WriteLine("请输入第{0}整数", i + 1);
                        list[i] = Convert.ToDouble(Console.ReadLine());
                        
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("输入并不是整数");
                        i--;
                    }
                }
      double[] list = new double[Num];
      list[i] = Convert.ToDouble(Console.ReadLine());
    把这个声明成double就可以了,应为C#中可以自动转化。就是int可以自动转化成double。