User Input ในภาษา C#
User Input คือ “ข้อมูลที่ผู้ใช้ป้อนเข้ามาในโปรแกรม” ขณะรันอยู่ เช่น การพิมพ์ข้อความหรือตัวเลขผ่านคีย์บอร์ด โปรแกรมจะนำค่าที่ผู้ใช้กรอกไปประมวลผลต่อ เช่น คำนวณผลลัพธ์ แสดงข้อความตอบกลับ หรือบันทึกข้อมูลในระบบ

ในภาษา C# การรับข้อมูลจากผู้ใช้มักทำผ่าน Console โดยใช้คำสั่ง Console.ReadLine() ซึ่งเป็นวิธีพื้นฐานและเข้าใจง่ายที่สุดสำหรับโปรแกรมแบบ Text-based (ไม่มีหน้าต่าง GUI)

การเข้าใจวิธีรับข้อมูลจากผู้ใช้ถือเป็นพื้นฐานสำคัญของการเขียนโปรแกรม เพราะทำให้โปรแกรมโต้ตอบกับผู้ใช้ได้จริง ไม่ใช่เพียงแค่แสดงผลออกมาอย่างเดียว

วิธีรับข้อมูลจากผู้ใช้ด้วย Console.ReadLine()

ในภาษา C# คำสั่ง Console.ReadLine() ใช้สำหรับรับค่าที่ผู้ใช้พิมพ์จากแป้นพิมพ์ (keyboard) แล้วกด Enter โปรแกรมจะอ่านข้อมูลนั้นเป็นชนิด string (ข้อความ) โดยอัตโนมัติ

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.Write("กรุณาป้อนชื่อของคุณ: ");
            string name = Console.ReadLine();
            Console.WriteLine($"สวัสดีคุณ {name} ยินดีต้อนรับสู่โปรแกรม C#!");
        }
    }
}
  • Console.Write("กรุณาป้อนชื่อของคุณ: "); แสดงข้อความเชิญให้ผู้ใช้กรอกชื่อ (ไม่ขึ้นบรรทัดใหม่)
  • string name = Console.ReadLine(); รอรับค่าที่ผู้ใช้พิมพ์ แล้วเก็บไว้ในตัวแปร name
  • Console.WriteLine(...) แสดงข้อความตอบกลับโดยนำค่าที่รับมาแทรกในประโยค

การรับค่าตัวเลขจากผู้ใช้

โดยปกติ Console.ReadLine() จะคืนค่ากลับมาเป็นข้อความ (string) เสมอ หากต้องการนำค่ามาคำนวณ เช่น บวก ลบ หรือคูณ จำเป็นต้องแปลง (Convert) ค่าที่รับมาเป็นชนิดตัวเลข เช่น int, double, หรือ decimal ก่อนใช้งาน

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.Write("กรุณาป้อนอายุของคุณ: ");
            string input = Console.ReadLine();
            int age = Convert.ToInt32(input);   // แปลง string → int
            Console.WriteLine($"คุณมีอายุ {age} ปี");
        }
    }
}
  • รับค่าที่ผู้ใช้ป้อนในรูปแบบข้อความ
  • ใช้ Convert.ToInt32() เพื่อแปลงข้อความให้เป็นจำนวนเต็ม (int)
  • แสดงผลข้อความโดยนำค่าที่แปลงแล้วมาใช้งาน

การแปลงข้อมูลด้วย TryParse เพื่อป้องกันข้อผิดพลาด

หากผู้ใช้กรอกค่าที่ไม่ใช่ตัวเลข เช่น “abc” โปรแกรมจะเกิดข้อผิดพลาด (Exception) ได้ เพื่อป้องกันปัญหานี้ เราควรใช้เมธอด TryParse() ซึ่งปลอดภัยกว่า เพราะไม่ทำให้โปรแกรมหยุดทำงานเมื่อแปลงไม่ได้

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.Write("กรุณาป้อนอายุของคุณ: ");
            string input = Console.ReadLine();

            bool success = int.TryParse(input, out int age);
            if (success)
            {
                Console.WriteLine($"คุณมีอายุ {age} ปี");
            }
            else
            {
                Console.WriteLine("กรุณาป้อนเป็นตัวเลขเท่านั้น!");
            }
        }
    }
}
  • รับข้อมูลจากผู้ใช้ในรูปแบบข้อความ
  • ใช้ int.TryParse(input, out int age) เพื่อพยายามแปลงข้อความเป็นตัวเลข
  • ถ้าแปลงสำเร็จ (success = true) จะแสดงผลอายุ
  • ถ้าแปลงไม่สำเร็จ จะแสดงข้อความเตือนแทน

การรับค่าหลายรายการจากผู้ใช้

บางครั้งเราต้องการให้ผู้ใช้กรอกข้อมูลหลายค่า เช่น ค่าคะแนน 3 วิชา กรณีเช่นนี้ก็สามารถรับและแปลงค่าได้เช่นกัน

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.Write("กรอกคะแนนวิชาคณิตศาสตร์: ");
            double math = Convert.ToDouble(Console.ReadLine());

            Console.Write("กรอกคะแนนวิชาภาษาไทย: ");
            double thai = Convert.ToDouble(Console.ReadLine());

            Console.Write("กรอกคะแนนวิชาวิทยาศาสตร์: ");
            double sci = Convert.ToDouble(Console.ReadLine());

            double average = (math + thai + sci) / 3;
            Console.WriteLine($"คะแนนเฉลี่ยของคุณคือ: {average:F2}");
        }
    }
}
  • รับคะแนนจากผู้ใช้ทั้ง 3 วิชา
  • แปลงค่าทั้งหมดจาก string เป็น double
  • นำค่ามาคำนวณหาค่าเฉลี่ย
  • ใช้ :F2 เพื่อกำหนดให้แสดงผลทศนิยม 2 ตำแหน่ง

การรับข้อมูลแบบไม่ขึ้นบรรทัดใหม่

โดยทั่วไป Console.WriteLine() จะขึ้นบรรทัดใหม่อัตโนมัติ แต่ถ้าต้องการให้ข้อความต่อเนื่องในบรรทัดเดียว (เหมาะกับการถามคำถามสั้น ๆ) สามารถใช้ Console.Write() ได้

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.Write("กรอกชื่อของคุณ: ");
            string name = Console.ReadLine();
            Console.WriteLine($"สวัสดีคุณ {name}");
        }
    }
}
  • Console.Write() ใช้แสดงข้อความโดยไม่ขึ้นบรรทัดใหม่ ทำให้เคอร์เซอร์อยู่ในบรรทัดเดียวกับข้อความ
  • Console.ReadLine() จะอ่านค่าที่พิมพ์ต่อจากข้อความนั้นทันที

การนำ User Input ไปประยุกต์ใช้งานจริง

เมื่อเราเข้าใจหลักการรับค่าจากผู้ใช้แล้ว สามารถนำไปใช้ในสถานการณ์จริงได้มากมาย เช่น

  • โปรแกรมคำนวณผลลัพธ์ (เช่น BMI หรือคะแนนเฉลี่ย)
  • โปรแกรมระบบสมัครสมาชิกที่รับชื่อ–อีเมล
  • โปรแกรมทายตัวเลข (Number Guessing Game)
  • โปรแกรมเลือกเมนูจากตัวเลขที่ผู้ใช้ป้อน

ตัวอย่างเช่น โปรแกรมคำนวณผลบวกของตัวเลขสองจำนวน

C#
namespace MyConsoleApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.Write("ป้อนตัวเลขที่ 1: ");
            int a = Convert.ToInt32(Console.ReadLine());

            Console.Write("ป้อนตัวเลขที่ 2: ");
            int b = Convert.ToInt32(Console.ReadLine());

            int sum = a + b;
            Console.WriteLine($"ผลบวกของ {a} + {b} = {sum}");
        }
    }
}
โปรแกรมคำนวณผลบวกของตัวเลขสองจำนวน

ข้อควรระวังในการใช้ User Input ในภาษา C#

การรับข้อมูลจากผู้ใช้เป็นสิ่งที่ต้องระวังเสมอ เพราะผู้ใช้อาจกรอกค่าผิดหรือไม่ตรงกับชนิดข้อมูลที่โปรแกรมต้องการ เช่น พิมพ์ตัวอักษรแทนตัวเลข ควรใช้ TryParse() หรือโครงสร้าง try...catch เพื่อจัดการข้อผิดพลาดเหล่านี้

User Input คือพื้นฐานของการทำให้โปรแกรมโต้ตอบกับผู้ใช้ได้อย่างสมบูรณ์ การเรียนรู้วิธีใช้ Console.ReadLine() และการแปลงค่าที่รับมาเป็นชนิดข้อมูลที่เหมาะสม จะช่วยให้เราสร้างโปรแกรมที่ยืดหยุ่น ใช้งานได้จริง และรองรับข้อมูลได้หลากหลายมากขึ้น

แชร์เรื่องนี้