`Console.ReadLine()` 和 `int.TryParse()` 应该如何配合使用?
时间: 2024-09-23 10:04:34 浏览: 42
`Console.ReadLine()` 和 `int.TryParse()` 可以结合起来使用,以便安全且可靠地从控制台获取用户的整数输入。以下是配合使用的示例:
```csharp
Console.WriteLine("请输入一个整数:");
string input = Console.ReadLine(); // 获取用户的一行输入
int number;
bool success = int.TryParse(input, out number); // 尝试解析输入为整数
if (success)
{
Console.WriteLine("您输入的数字是: " + number);
}
else
{
Console.WriteLine("无效的输入,请输入一个整数!");
}
```
在这个例子中,`int.TryParse()` 函数会尝试将 `input` 转换为整数,并将结果存储到 `number` 变量中。如果转换成功,`success` 将为 `true`,我们就可以继续使用 `number`;如果转换失败(例如输入的是非数字字符),`success` 就为 `false`,我们会捕获这个错误并给出相应的提示。
相关问题
int.TryParse(Console.ReadLine(), out int value)
这是一个 C# 语言中的代码,它从控制台读取用户输入,将其尝试转换为整数,并将转换后的整数存储在名为 `value` 的变量中。`int.TryParse` 方法返回一个布尔值,指示转换是否成功。如果转换成功,`out` 关键字将把值赋给 `value` 变量。如果转换失败,`value` 的值将保持不变。
优化代码 Console.WriteLine("Please enter a number:"); int number = int.Parse(Console.ReadLine()); while (number <= 0) { Console.WriteLine("Sorry,please enter a positive value."); number = Int32.Parse(Console.ReadLine()); } Console.WriteLine("Please enter " + number + " words:"); string[] words = new string[number]; for (int n = 0; n < number; n++) { Console.WriteLine($"Please enter word {n + 1}"); string word = Console.ReadLine(); while (word.Length < 1) { Console.WriteLine("Sorry,your word must have at least one character"); word = Console.ReadLine(); } words[n] = word; } Console.WriteLine("You enter these words:"); foreach (string s in words) { Console.WriteLine(s); }; Console.WriteLine("Please enter a character:"); char letter = char.Parse(Console.ReadLine()); if (char.IsLetter(letter)) { string joinedWords = string.Join("", words).ToLower(); int count = 0; for (int i = 0; i < joinedWords.Length; i++) { if (joinedWords[i] == letter) { count++; } } if (count == 0) { Console.WriteLine("The letter you entered does not appear"); } else { double per = Convert.ToDouble(count) / Convert.ToDouble(joinedWords.Length); if (per > 0.25) { Console.WriteLine("The letter " + letter + " appears " + count + " times in the array. This letter makes up more than 25 % of the total number of characters."); } else { Console.WriteLine("The letter " + letter + " appears " + count + " times in the array. This letter makes up less than 25 % of the total number of characters."); } } } else { Console.WriteLine("Incorrect letter format entered,Please enter again:"); letter = char.Parse(Console.ReadLine()); }
以下是优化后的代码:
Console.WriteLine("Please enter a positive integer:");
int number;
while (!int.TryParse(Console.ReadLine(), out number) || number <= 0)
{
Console.WriteLine("Invalid input. Please enter a positive integer:");
}
string[] words = new string[number];
for (int i = 0; i < number; i++)
{
Console.WriteLine($"Please enter word {i + 1}:");
string word;
while (string.IsNullOrWhiteSpace(word = Console.ReadLine()))
{
Console.WriteLine("Invalid input. Please enter a non-empty word:");
}
words[i] = word;
}
Console.WriteLine("You entered these words:");
Console.WriteLine(string.Join(", ", words));
Console.WriteLine("Please enter a character:");
char letter;
while (!char.TryParse(Console.ReadLine(), out letter) || !char.IsLetter(letter))
{
Console.WriteLine("Invalid input. Please enter a letter:");
}
string joinedWords = string.Concat(words).ToLower();
int count = joinedWords.Count(c => c == letter);
if (count == 0)
{
Console.WriteLine($"The letter {letter} does not appear.");
}
else
{
double per = (double)count / joinedWords.Length;
if (per > 0.25)
{
Console.WriteLine($"The letter {letter} appears {count} times in the array. This letter makes up more than 25% of the total number of characters.");
}
else
{
Console.WriteLine($"The letter {letter} appears {count} times in the array. This letter makes up less than 25% of the total number of characters.");
}
}
主要进行了以下优化:
1. 使用 TryParse 进行输入验证,避免程序崩溃;
2. 使用 string.IsNullOrWhiteSpace() 进行字符串输入验证,避免用户输入空格或空字符串;
3. 使用 Count() 方法和 lambda 表达式计算字符出现次数;
4. 使用 string.Join() 方法和 string.Concat() 方法拼接字符串;
5. 简化了部分代码,并去除了不必要的类型转换。