一包茄子酱 2022-04-14 14:57 采纳率: 100%
浏览 39
已结题

C#判断语句中数据类型

在用C#学习写一个最简单的图书借阅管理系统,想要实现输入一本书的数量后,如果数量大于0,“借阅状态”能判断为“可借阅”,反之则不可借阅,但是Qty用String类型无法用>来判断,改成int也报错,求问怎么改

public class Book
{
    public string BookName { get; set; }
    public string BookAuthor { get; set; }
    public string BookQty { get; set; }
    public string BookLoc { get; set; }
    public string BookStatus { get; set; }

}
public class Library
{
    List<Book> Books = new List<Book>();
    List<Book> books = new List<Book>();
    
    #region 录入
    public void exe0()
    {

        int i = 1;
        string str = "";
        while (str != "ok")
        {
            Console.WriteLine("请输入第{0}本书的书名:", i);
            string name = Console.ReadLine();
            Console.WriteLine("请输入第{0}本书的作者:", i);
            string author = Console.ReadLine();
            Console.WriteLine("请输入第{0}本书的数量:", i);
            string qty = Console.ReadLine();
            Console.WriteLine("请输入第{0}本书的位置:", i);
            string loc = Console.ReadLine();
            if (qty > 0)
            {
                string status = "可借阅";
            }
            else 
            {
                string status = "不可借阅";
            }

            Books.Add(new Book { BookName = name, BookAuthor = author, BookQty = qty, BookLoc = loc, BookStatus = status});
            i = i + 1;
            Console.WriteLine("输入 ok 停止录入,按任意键继续");
            str = Console.ReadLine();

        }
        Console.WriteLine("");
        Console.WriteLine("");
        Console.WriteLine("书名\t作者\t数量\t位置\t借阅状态");
        foreach (var item in Books)
        {
            Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}", item.BookName, item.BookAuthor, item.BookQty, item.BookLoc, item.BookStatus);
        }

    }

运行报错
Operator '>' cannot be applied to operands of type 'string' and 'int'
The name 'status' does not exist in the current context

  • 写回答

2条回答 默认 最新

  • 依然如昨 2022-04-14 15:12
    关注

    直接转int型啊,int qty= int.Parse(console.ReadLine());//当然最好加上try catch 处理输入非数字的异常

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 楚楚3107 2022-04-14 17:31
    关注

    错误原因:不能拿string 和int进行比较。我帮你把代码改好了。直接运行即可

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Decorator_Test
    {
        public class Book
        {
            public string BookName { get; set; }
            public string BookAuthor { get; set; }
            public string BookQty { get; set; }
            public string BookLoc { get; set; }
            public string BookStatus { get; set; }
    
        }
        public class Library
        {
            List<Book> Books = new List<Book>();
            List<Book> books = new List<Book>();
    
            #region 录入
            public void exe0()
            {
    
                int i = 1;
                string str = "";
                while (str != "ok")
                {
                    Console.WriteLine("请输入第{0}本书的书名:", i);
                    string name = Console.ReadLine();
                    Console.WriteLine("请输入第{0}本书的作者:", i);
                    string author = Console.ReadLine();
                    Console.WriteLine("请输入第{0}本书的数量:", i);
                    string qty = Console.ReadLine();
                    Console.WriteLine("请输入第{0}本书的位置:", i);
                    string loc = Console.ReadLine();
                    int count;
                    string status;
                    if (Int32.TryParse(qty, out count) && count > 0)
                    {
                        status = "可借阅";
                    }
                    else
                    {
                        status = "不可借阅";
                    }
    
                    Books.Add(new Book { BookName = name, BookAuthor = author, BookQty = qty, BookLoc = loc, BookStatus = status });
                    i = i + 1;
                    Console.WriteLine("输入 ok 停止录入,按任意键继续");
                    str = Console.ReadLine();
    
                }
                Console.WriteLine("");
                Console.WriteLine("");
                Console.WriteLine("书名\t作者\t数量\t位置\t借阅状态");
                foreach (var item in Books)
                {
                    Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}", item.BookName, item.BookAuthor, item.BookQty, item.BookLoc, item.BookStatus);
                }
    
            }
            #endregion
        }
        class Program
        {
            static void Main(string[] args)
            {
                Library library = new Library();
                library.exe0();
            }
        }
    }
    
    ```c#
    
    
    

    ```

    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月26日
  • 已采纳回答 4月18日
  • 创建了问题 4月14日

悬赏问题

  • ¥15 字符串的比较老是报错
  • ¥15 很简单的c#代码补全
  • ¥15 复杂表达式求值程序里的函数优先级问题
  • ¥15 求密码学的客成社记ji着用
  • ¥35 POI导入树状结构excle
  • ¥15 初学者c语言题目解答
  • ¥15 div editable中的光标问题
  • ¥15 mysql报错1415Not allowed to return a result set from a trigger 不知如何修改
  • ¥60 Python输出Excel数据整理,算法较为复杂
  • ¥15 回答几个问题 关于数据库