Reading User Input
Interactive programs need to get input from users. This lesson shows you how to read and process user input in C# console applications.
Console.ReadLine()
The Console.ReadLine() method reads a line of text from the user:
csharp1Console.Write("Enter your name: ");2string name = Console.ReadLine();3Console.WriteLine($"Hello, {name}!");
Write vs WriteLine for Prompts
csharp1// WriteLine moves to next line (user types on new line)2Console.WriteLine("Enter your name:");3string name1 = Console.ReadLine();45// Write stays on same line (user types after prompt)6Console.Write("Enter your name: ");7string name2 = Console.ReadLine(); // Better UX
Handling Null Input
ReadLine() can return null (when input stream ends). Handle it safely:
csharp1// Using null-coalescing operator2string input = Console.ReadLine() ?? "";34// Using null-conditional5string input = Console.ReadLine();6if (input != null)7{8 // Process input9}1011// Modern pattern12string input = Console.ReadLine() ?? string.Empty;
Converting Input to Numbers
User input is always a string. Convert it to use as numbers:
Using Parse (simple but throws exceptions)
csharp1Console.Write("Enter your age: ");2string input = Console.ReadLine() ?? "";3int age = int.Parse(input);4Console.WriteLine($"Next year you'll be {age + 1}");
Using TryParse (safe, recommended)
csharp1Console.Write("Enter your age: ");2string input = Console.ReadLine() ?? "";34if (int.TryParse(input, out int age))5{6 Console.WriteLine($"Next year you'll be {age + 1}");7}8else9{10 Console.WriteLine("Invalid number!");11}
Converting Different Types
csharp1Console.Write("Enter a whole number: ");2int wholeNumber = int.Parse(Console.ReadLine() ?? "0");34Console.Write("Enter a decimal number: ");5double decimalNumber = double.Parse(Console.ReadLine() ?? "0");67Console.Write("Enter a price: ");8decimal price = decimal.Parse(Console.ReadLine() ?? "0");910Console.Write("True or false? ");11bool answer = bool.Parse(Console.ReadLine() ?? "false");
Complete Input Pattern
Here's a robust pattern for reading numeric input:
csharp1int GetIntFromUser(string prompt)2{3 while (true)4 {5 Console.Write(prompt);6 string input = Console.ReadLine() ?? "";78 if (int.TryParse(input, out int result))9 {10 return result;11 }1213 Console.WriteLine("Invalid number. Please try again.");14 }15}1617// Usage18int age = GetIntFromUser("Enter your age: ");19Console.WriteLine($"You are {age} years old.");
Reading Single Characters
For single character input, you can use:
csharp1// Read a line and take first character2Console.Write("Enter a letter: ");3string input = Console.ReadLine() ?? "";4if (input.Length > 0)5{6 char letter = input[0];7 Console.WriteLine($"You entered: {letter}");8}910// Or use Console.ReadKey for immediate input11Console.Write("Press any key: ");12ConsoleKeyInfo keyInfo = Console.ReadKey();13char key = keyInfo.KeyChar;14Console.WriteLine($"\nYou pressed: {key}");
Console.ReadKey()
For immediate character input without pressing Enter:
csharp1Console.Write("Press Y or N: ");2ConsoleKeyInfo key = Console.ReadKey();3Console.WriteLine(); // Move to next line45if (key.Key == ConsoleKey.Y)6{7 Console.WriteLine("You chose Yes");8}9else if (key.Key == ConsoleKey.N)10{11 Console.WriteLine("You chose No");12}
Practical Examples
Simple Calculator Input
csharp1Console.Write("Enter first number: ");2if (!double.TryParse(Console.ReadLine(), out double num1))3{4 Console.WriteLine("Invalid number!");5 return;6}78Console.Write("Enter second number: ");9if (!double.TryParse(Console.ReadLine(), out double num2))10{11 Console.WriteLine("Invalid number!");12 return;13}1415Console.WriteLine($"Sum: {num1 + num2}");16Console.WriteLine($"Difference: {num1 - num2}");17Console.WriteLine($"Product: {num1 * num2}");18if (num2 != 0)19{20 Console.WriteLine($"Quotient: {num1 / num2}");21}
Menu Selection
csharp1Console.WriteLine("=== Main Menu ===");2Console.WriteLine("1. Start Game");3Console.WriteLine("2. Settings");4Console.WriteLine("3. Exit");5Console.Write("Choose an option: ");67string choice = Console.ReadLine() ?? "";89switch (choice)10{11 case "1":12 Console.WriteLine("Starting game...");13 break;14 case "2":15 Console.WriteLine("Opening settings...");16 break;17 case "3":18 Console.WriteLine("Goodbye!");19 break;20 default:21 Console.WriteLine("Invalid option!");22 break;23}
Yes/No Confirmation
csharp1Console.Write("Are you sure? (yes/no): ");2string response = Console.ReadLine()?.ToLower() ?? "";34if (response == "yes" || response == "y")5{6 Console.WriteLine("Confirmed!");7}8else9{10 Console.WriteLine("Cancelled.");11}
Summary
In this lesson, you learned:
Console.ReadLine()reads a line of text from the user- Use
Console.Write()for prompts to keep cursor on same line - Always handle potential null input with
??operator - Convert strings to numbers with
Parse()orTryParse() - Use
Console.ReadKey()for immediate single-key input - Validate user input before using it
Now you're ready for the hands-on calculator workshop!