程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c#-C#數組switch中的goto問題

c#-C#數組switch中的goto問題

編輯:編程綜合問答
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移動問答

最佳回答:


因為你用的是
order = (char)Console.Read();
它每次讀取一個字符,第一次你輸入 'e'然後按下回車換行,它輸出"請重新輸入指令"後 goto上去會讀取回車字符,再goto上去讀取換行字符,都讀取結束了才會讓你繼續輸入

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved