c# - 循环的存储选项?C#
问题描述
您好我正在学习编程并尝试创建一个简单的控制台应用程序供用户购买电影票。
我目前正在使用很多循环,我想知道是否有办法:
1:存储来自循环的用户输入。
2:从循环中获取存储的数据并将其添加到最终计数中。
我曾尝试使用数组来存储循环中的用户输入,但是当我想将数据存储在最终计数中时,我得到一个错误:运算符不能应用于“int []”和“int”类型的操作数'。
我不想发布我的完整来源,但希望看到我的变量应该可以帮助您了解我需要跟踪的内容。
在此先感谢您,欢迎任何帮助。
//Ticket sale math Values
double TotalIncome;
double IncomeFromChild;
double IncomeFromAdult;
double IncomeFromStudent;
double VATFinal;
//Tickets Sold (name of film or total)
double FilmA = 33;
double FilmB = 15;
double TotalTicketsSold;
float PeopleServed;
//Ticket Sale Counters
double ChildTickets = 0;
double Adulttickets = 0;
double StudentTickets = 0;
//Array For Ticket prices, sales and user input
var TicketChoices = new int[3];
var TicketAmount = new int[48];
//Maxxium tickets allowed for each film
int FilmA = 33;
int FilmB = 15;
int TotalTickets = 48;
解决方案
如果你想收集一堆东西,一个好的第一步是创建一个类或结构。
这是一个基本的想法——我不打算讨论最佳实践或任何东西:
public class UserInput
{
public decimal IncomeFromChild { get; set; }
public decimal IncomeFromAdult { get; set; }
public decimal IncomeFromStudent { get; set; }
public decimal TotalIncome => IncomeFromChild + IncomeFromAdult + IncomeFromStudent;
}
当您收到每组值时,您可以创建一个UserInput
.
var myInput = new UserInput {IncomeFromChild = 5.00M, IncomeFromAdult = 3.5M};
这使得原始问题更容易回答。我们如何存储这些?当我们想要存储一些东西时,我们使用一个集合。
也许最常用的集合是 a List
,因为您可以向其中添加内容。
首先将导入添加using System.Collections.Generic;
到文件顶部。
var myListOfInputs = new List<UserInput>();
myListOfInputs.Add(myInput);
然后你可以像这样查看列表中的所有项目:
decimal total = 0M;
foreach(var input in myListOfInputs)
{
total = total + input.TotalIncome;
}
还有很多用于对集合执行操作的扩展方法。如果将此导入添加到文件的开头:
using System.Linq;
你可以使用这个:
var total = myListOfInputs.Sum(i => i.TotalIncome);
它与上面的循环基本相同,只是写起来更短。通过长期写一些类似的东西来学习并没有什么坏处。
推荐阅读
- html - 是否可以使用 Go 和 webview 使用本地 HTML 文件?
- elasticsearch - 如何测试 Elasticsearch 集群的 3 节点设置的 HA?
- reactjs - 在 Reactjs 中实现文件上传的问题
- c# - 为什么使用 wm_settext 发送消息不起作用?
- azure-active-directory - 如何在 Angular 的 MSAL 客户端登录中提供重定向体验?
- mysql - HAProxy 无法连接到 MariaDB
- swift - Swift 如何停止 Netflix 应用程序录制,在 plist 应用程序录制限制
- oop - Lua OOP 类的多个实例被忽略,为什么?
- visual-studio - MSBuild 重新扩展属性
- c++ - 在 chromium 中添加自定义 c++ 函数并在浏览器中调用它们