鑫花璐放
2014-01-15 09:25
采纳率: 33.3%
浏览 2.5k

C#数组switch中的goto问题

在键盘上接收用户输入的15个整数数值,输入完成后,接收用户输入的指令,

如果用户输入a(大小写不区分)升序排列,如果输入d(大小写不区分)降序排列,否则提示

用户重新输入指令,输出排序前与排序后的数列内容。

下面是我的代码

namespace ConsoleApplication16
{ 
  class Program
  {
    static void Main(string[] args)
    {
        int[] arr = new int[15];
        Console.WriteLine("请输入15个整数");
        //初始化
        for (int i = 0; i < 15; ++i)
        {
            if (!int.TryParse(Console.ReadLine(), out arr[i]))
                Console.WriteLine("输入有误");
        }
        //复制原数组
        int[] arr1 = (int[])arr.Clone();
        //获取指令,根据指令调用函数
        Order:
        Console.WriteLine("请输入指令");
        char order;
        order = (char)Console.Read();
        switch (order)
        {
            case 'a': fun1(arr);
                break;
            case 'A': fun1(arr);
                break;
            case 'd': fun2(arr);
                break;
            case 'D': fun2(arr);
                break;
            default:
                Console.WriteLine("请重新输入指令");
                goto Order;
        }
        //打印原数组
        Console.Write("原序列为:");
        for (int i = 0; i < 15; ++i)
            Console.Write(arr1[i] + ",");
        Console.WriteLine();
        //打印新数组
        Console.Write("新序列为:");
        for (int i = 0; i < 15; ++i)
            Console.Write(arr[i] + ",");
        Console.WriteLine();
    }

    //a或者A指令
    public static void fun1(int[] arr)
    {
        for(int i = 0; i < 14; ++i)
            for(int j = 0; j < 14 - i; ++j)
            {
                int temp;
                if(arr[j] > arr[j+1])
                {
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
    }
    //d或者D指令
    public static void fun2(int[] arr)
    {
        for(int i = 0; i < 14; ++i)
            for(int j = 0; j < 14 - i; ++j)
            {
                int temp;
                if(arr[j] < arr[j+1])
                {
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
    }
}

}
下面是测试,请教指令输入那里为什么自动循环3次?
CSDN移动问答

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

  • 国士_枫 2014-01-17 01:28
    最佳回答

    因为你用的是
    order = (char)Console.Read();
    它每次读取一个字符,第一次你输入 'e'然后按下回车换行,它输出"请重新输入指令"后 goto上去会读取回车字符,再goto上去读取换行字符,都读取结束了才会让你继续输入

    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题