User Input ในภาษา C#
User Input คือ “ข้อมูลที่ผู้ใช้ป้อนเข้ามาในโปรแกรม” ขณะรันอยู่ เช่น การพิมพ์ข้อความหรือตัวเลขผ่านคีย์บอร์ด โปรแกรมจะนำค่าที่ผู้ใช้กรอกไปประมวลผลต่อ เช่น คำนวณผลลัพธ์ แสดงข้อความตอบกลับ หรือบันทึกข้อมูลในระบบ
ในภาษา C# การรับข้อมูลจากผู้ใช้มักทำผ่าน Console โดยใช้คำสั่ง Console.ReadLine() ซึ่งเป็นวิธีพื้นฐานและเข้าใจง่ายที่สุดสำหรับโปรแกรมแบบ Text-based (ไม่มีหน้าต่าง GUI)
การเข้าใจวิธีรับข้อมูลจากผู้ใช้ถือเป็นพื้นฐานสำคัญของการเขียนโปรแกรม เพราะทำให้โปรแกรมโต้ตอบกับผู้ใช้ได้จริง ไม่ใช่เพียงแค่แสดงผลออกมาอย่างเดียว
วิธีรับข้อมูลจากผู้ใช้ด้วย Console.ReadLine()
ในภาษา C# คำสั่ง Console.ReadLine() ใช้สำหรับรับค่าที่ผู้ใช้พิมพ์จากแป้นพิมพ์ (keyboard) แล้วกด Enter โปรแกรมจะอ่านข้อมูลนั้นเป็นชนิด string (ข้อความ) โดยอัตโนมัติ
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();รอรับค่าที่ผู้ใช้พิมพ์ แล้วเก็บไว้ในตัวแปรnameConsole.WriteLine(...)แสดงข้อความตอบกลับโดยนำค่าที่รับมาแทรกในประโยค
การรับค่าตัวเลขจากผู้ใช้
โดยปกติ Console.ReadLine() จะคืนค่ากลับมาเป็นข้อความ (string) เสมอ หากต้องการนำค่ามาคำนวณ เช่น บวก ลบ หรือคูณ จำเป็นต้องแปลง (Convert) ค่าที่รับมาเป็นชนิดตัวเลข เช่น int, double, หรือ decimal ก่อนใช้งาน
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() ซึ่งปลอดภัยกว่า เพราะไม่ทำให้โปรแกรมหยุดทำงานเมื่อแปลงไม่ได้
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 วิชา กรณีเช่นนี้ก็สามารถรับและแปลงค่าได้เช่นกัน
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() ได้
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)
- โปรแกรมเลือกเมนูจากตัวเลขที่ผู้ใช้ป้อน
ตัวอย่างเช่น โปรแกรมคำนวณผลบวกของตัวเลขสองจำนวน
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() และการแปลงค่าที่รับมาเป็นชนิดข้อมูลที่เหมาะสม จะช่วยให้เราสร้างโปรแกรมที่ยืดหยุ่น ใช้งานได้จริง และรองรับข้อมูลได้หลากหลายมากขึ้น
