TQC+ C# 認證教學手冊

102、for 迴圈與平均值計算

☑易 ☐中 ☐難

將字串轉換成數字

學習查閱 MSDN 文件。

public static int Parse(string s)

利用 Parse 方法進行轉換。

int num = int.Parse(str);

數字格式不正確:

"13" => 13
"A" => FormatException; 格式錯誤

檢查數字範圍。

「題目說明」有說「輸入 5 個大於或等於 1 而且小於 50 的數字。」

例外處理:

try {
    int.Parse(str);
}
catch (FormatException e) {
    // do something
}

迴圈控制:

for (int i = 0; i < 100; i++) {
    // ...
    continue; // or ... break;
}

試比較這些不同型別?

  • int v.s. Int32 v.s. Int64

參考程式碼

using System;

namespace CSD01
{
    class Program
    {
        static void Main(string[] args)
        {
            int total = 0;

            try
            {
                for (int i = 0; i < 5; i++)
                {
                    Console.Write("請輸入一個1-50的整數>");
                    string input = Console.ReadLine();

                    int num = int.Parse(input);

                    if (!(num >= 1 && num < 50))
                    {
                        Console.WriteLine("輸入數字必須在1-50之間,請重新輸入");
                        i--;
                        continue;
                    }

                    total += num;
                }

                Console.WriteLine("你輸入的5個整數和是{0}", total);
                Console.WriteLine("你輸入的5個整數其平均是{0}", total / 5);
            }
            catch (FormatException e)
            {
                Console.WriteLine("輸入錯誤,請重新執行");
            }

            Console.ReadLine();
        }
    }
}

問:

  • 有沒有比用 i--; 控制迴圈更好的做法?
  • 如何利用常數讓程式碼更容易維護?
  • 使用自訂的 Exception 類別擴充例外處理?