c# - 有一种更好的方法可以避免在 Console.ReadLine 中输入空值,而不是 if 语句
问题描述
到目前为止,如果代码一切正常,但有更好的方法可以避免在 Console.ReadLine 中输入空值,我已经尝试过 if 语句,但代码最终看起来像一团糟。
class ColocarMoedas
{
public static void Colocar(MaquinaUsuario user)
{
int m1, m5, m10, m25, m50;
Console.Clear();
Console.WriteLine("/////////////////////////MOEDAS////////////////////////////");
Console.Write("1 Centavo: ");
m1 = int.Parse(Console.ReadLine());
Console.Write("5 Centavo: ");
m5 = int.Parse(Console.ReadLine());
Console.Write("10 Centavo: ");
m10 = int.Parse(Console.ReadLine());
Console.Write("25 Centavo: ");
m25 = int.Parse(Console.ReadLine());
Console.Write("50 Centavo: ");
m50 = int.Parse(Console.ReadLine());
user.Adicionar(m1, m5, m10, m25, m50);
Console.Clear();
}
}
解决方案
有一种更好的方法可以避免使用空输入
Console.ReadLine
而不是 if 语句
答案是肯定的。
尽管值得注意的是,用户输入可能出错的地方不止null
. 事实上null
非常罕见,这是您需要担心的所有其他问题。
验证用户数字输入最惯用的方法是使用样式方法,当值无法解析时返回bool ,并通过参数 when返回值。TryParse
out
true
将数字的字符串表示形式转换为其等效的 32 位有符号整数。返回值指示操作是否成功。
您可以通过使用验证循环更进一步
int m1 = 0;
while (!int.TryParse(Console.ReadLine(), out m1))
Console.WriteLine("You hard one job! Now try again");
基本上上面说了,虽然数字不能转换成整数,包括拼写错误、空输入和Ctrl+c(null),但是写一条消息。
推荐阅读
- xml - 使用 sed 从类似 XML 的文件中删除特定文本
- php - 如何使用 php 获取 MySQL 表的自动增量值?
- c++ - 关于分布式向量设计和内存模型与 C++ 算法实现分离的建议
- django - MongoDB 从本地主机迁移到 Linux 服务器
- android - 嵌套回收器视图分页
- sql - 按 2 个 ID 和最小日期到列的行 - SQL
- python - ValueError:Series 的真值不明确。在创建新数据框时使用 a.empty、a.bool()、a.item()、a.any() 或 a.all() -df.apply()
- html - 如何使容器占用与其内容相同的空间
- azure-devops - 在 azure 管道中有条件地使用变量组
- mysql - 如何将sql中的查询转换为rails中的查询