You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止用户为C# Book类的BookName属性输入整数?

阻止用户输入纯整数作为Book书名的实现方案

首先,你当前的Book类代码如下:

private string? _bookName;

public string? BookName
{
    get
    {
        return _bookName;
    }
    set
    {
        _bookName = value;
    }
}

要实现阻止用户输入纯整数作为书名的功能,有几种实用的实现方式,根据你的需求选择即可:


方式1:在输入环节直接验证(简单直观)

在Main方法获取用户输入时,循环检查输入是否为纯整数,直到用户输入符合要求:

List<Book> books = new List<Book>();
Book newBook = new Book();

Console.WriteLine("请输入书名:");
string? input = Console.ReadLine();

// 循环验证:如果输入是纯整数,就提示重新输入
while (!string.IsNullOrEmpty(input) && input.All(char.IsDigit))
{
    Console.WriteLine("书名不能是纯整数,请重新输入:");
    input = Console.ReadLine();
}

newBook.BookName = input;
books.Add(newBook);
  • 逻辑说明:input.All(char.IsDigit)会检查输入的每一个字符都是数字;!string.IsNullOrEmpty(input)避免空输入触发错误判断。

方式2:在Book类的属性Setter中验证(全局管控)

把验证逻辑封装到Book类的BookName属性里,这样无论在哪里给BookName赋值,都会自动验证,避免遗漏:

private string? _bookName;

public string? BookName
{
    get
    {
        return _bookName;
    }
    set
    {
        // 验证规则:非空且全为数字的输入不允许
        if (!string.IsNullOrEmpty(value) && value.All(char.IsDigit))
        {
            // 这里可以选择抛异常、提示用户或保持原有值
            throw new ArgumentException("书名不能是纯整数");
            // 若不想抛异常,也可以替换为:_bookName = _bookName; // 保留原有值
            // 或者:Console.WriteLine("书名格式无效,未设置成功");
        }
        else
        {
            _bookName = value;
        }
    }
}

在Main方法中调用时,可以捕获异常处理:

List<Book> books = new List<Book>();
Book newBook = new Book();

Console.WriteLine("请输入书名:");
string? input = Console.ReadLine();

try
{
    newBook.BookName = input;
    books.Add(newBook);
    Console.WriteLine("书名设置成功");
}
catch (ArgumentException ex)
{
    Console.WriteLine(ex.Message);
}

方式3:封装通用验证方法(复用性强)

如果多个地方需要用到类似验证,可以封装一个静态方法:

public static bool IsPureInteger(string? input)
{
    return !string.IsNullOrEmpty(input) && input.All(char.IsDigit);
}

然后在输入时调用:

Console.WriteLine("请输入书名:");
string? input = Console.ReadLine();

while (IsPureInteger(input))
{
    Console.WriteLine("书名不能是纯整数,请重新输入:");
    input = Console.ReadLine();
}

newBook.BookName = input;
books.Add(newBook);

内容的提问来源于stack exchange,提问作者behnami454

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:54:53