提问人:Deasjia Shannon 提问时间:9/23/2023 更新时间:9/23/2023 访问量:79
试图在 5 名员工中找到出价最高的员工
Trying to find the employee who placed the highest bid out of 5 employees
问:
分配的重点是分配所有 5 个人的姓名和他们出价的次数(必须低于或等于零)。然后,我需要获取这些姓名和数字并存储它们,以便将它们显示为出价最高的员工以及出价多少。 例如:Jason 的最高出价为 63。
这是我尝试过的代码,一切正常,直到它比较最大的出价,并且它每次都会选择我的第一个出价者。我还是新手,所以我不知道所有的术语和细节,所以像个孩子一样和我说话。 C# 代码:
using System;
class TopSeller
{
private static void
Main(string[] args)
{
string employee;
int widgetsSold;
//Employee #1
Console.WriteLine("Hello, Can you please enter your name: ");
employee =Console.ReadLine();
Console.WriteLine("Enter the number of widgets sold: ");
widgetsSold = int.Parse(Console.ReadLine());
if(widgetsSold > 100)
{
Console.WriteLine("Number has to be at or below 100. Re-enter Widgets sold: ");
widgetsSold = int.Parse(Console.ReadLine());
}
//Employee #2
int widgetsSold2;
String employee2;
Console.WriteLine("Hello, Can you please enter your name: ");
employee2 = Console.ReadLine();
Console.WriteLine("Enter the number of widgets sold: ");
widgetsSold2 = int.Parse(Console.ReadLine());
if (widgetsSold2 > 100)
{
Console.WriteLine("Number has to be at or below 100. Re-enter Widgets sold: ");
widgetsSold2 = int.Parse(Console.ReadLine());
}
//Employee #3
String employee3;
int widgetsSold3;
Console.WriteLine("Hello, Can you please enter your name: ");
employee3 = Console.ReadLine();
Console.WriteLine("Enter the number of widgets sold: ");
widgetsSold3 = int.Parse(Console.ReadLine());
if (widgetsSold3 > 100)
{
Console.WriteLine("Number has to be at or below 100. Re-enter Widgets sold: ");
widgetsSold3 = int.Parse(Console.ReadLine());
}
//Employee #4
int widgetsSold4;
String employee4;
Console.WriteLine("Hello, Can you please enter your name: ");
employee4 = Console.ReadLine();
Console.WriteLine("Enter the number of widgets sold: ");
widgetsSold4 = int.Parse(Console.ReadLine());
if (widgetsSold4 > 100)
{
Console.WriteLine("Number has to be at or below 100. Re-enter Widgets sold: ");
widgetsSold4 = int.Parse(Console.ReadLine());
}
//Employee #5
int widgetsSold5;
String employee5;
Console.WriteLine("Hello, Can you please enter your name: ");
employee5 = Console.ReadLine();
Console.WriteLine("Enter the number of widgets sold: ");
widgetsSold5 = int.Parse(Console.ReadLine());
if (widgetsSold5 > 100)
{
Console.WriteLine("Number has to be at or below 100. Re-enter Widgets sold: ");
widgetsSold5 = int.Parse(Console.ReadLine());
}
//top seller and largest bid
String TopSeller;
int LargestBid = 0;
//Comparison
if (widgetsSold > widgetsSold5)
{
TopSeller = employee;
LargestBid = widgetsSold;
}
else if(widgetsSold < widgetsSold5)
{
TopSeller = employee5;
LargestBid = widgetsSold5;
}
else if(widgetsSold4 > widgetsSold5)
{
TopSeller = employee4;
LargestBid = widgetsSold4;
}
else if(widgetsSold3 > widgetsSold4)
{
TopSeller = employee3;
LargestBid = widgetsSold3;
}
else if(widgetsSold2 > widgetsSold3)
{
TopSeller = employee2;
LargestBid = widgetsSold2;
}
else if(widgetsSold > widgetsSold2)
{
TopSeller = employee;
LargestBid = widgetsSold;
}
Console.WriteLine(TopSeller + " had the largest sell of: " + LargestBid);
}
}
答:
0赞
David House
9/23/2023
#1
因此,首先考虑将相关数据保存在一个对象中。我们可以使用几种不同类型的对象(如果您对此感兴趣,请查看记录和结构),但为了简单起见,让我们构建一个类。Bid
public class Bid {
public string EmployeeName { get; }
public int WidgetsSold { get; }
public Bid(string employeeName, int widgetsSold)
{
EmployeeName = employeeName;
WidgetsSold = widgetsSold;
}
}
在上面,我们将创建一个对象来将我们的数据放在一起。这个对象有几个属性,我已将这些属性标记为 get only,因为一旦创建了出价,我们就不想更改它。然后有一个构造函数,它获取小部件的名称和数量,并将它们存储到这些属性中。Bid
现在,我们可以创建其中的几个出价等级,并轻松地将它们相互比较。我们将建立一个这些出价的列表,然后从那里获得最高的出价。数据捕获可以拆分为一些私有方法,以便我们将每个字段的所有输入验证放在一起。我们还将创建出价的逻辑置于一个循环中,这样我们就不会重复代码,并且可以轻松地扩展到要捕获的不同数量的出价。
using System;
using System.Collections.Generic;
using System.Linq;
class TopSeller
{
// Defines the number of times to ask for bids
public const int NumberOfBids = 5;
private static void Main(string[] args)
{
// Create the list that will hold our bids
var bidList = new List<Bid>();
for (int i = 0; i < NumberOfBids; i++)
{
var employeeName = ReadEmployeeName();
var widgetsSold = ReadNumberOfWidgets();
// Create a new Bid and add it to our list.
bidList.Add(new Bid(employeeName, widgetsSold));
}
// Put the bids in order of largest number of widgets sold to smallest, and select the first one
var maxBid = bidList.OrderByDescending(bid => bid.WidgetsSold).First();
Console.WriteLine($"{maxBid.EmployeeName} had the max bid of {maxBid.WidgetsSold}");
}
private static string ReadEmployeeName()
{
Console.WriteLine("Hello, can you please enter your name: ");
while (true) // We want to loop forever until someone enters a valid name
{
var name = Console.ReadLine();
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("Name must not be empty, please try again");
}
else
{
return name;
}
}
}
private static int ReadNumberOfWidgets()
{
Console.WriteLine("Enter the number of widgets sold: ");
while (true) // We want to loop forever until someone enters a valid number of widgets
{
var numberOfWidgetsString = Console.ReadLine();
if (string.IsNullOrWhiteSpace(numberOfWidgetsString))
{
Console.WriteLine("Number of widgets must not be empty, please try again");
}
else
{
var success = int.TryParse(numberOfWidgetsString, out var numberOfWidgets);
if (!success)
{
Console.WriteLine("Please enter a whole number");
}
else if (numberOfWidgets < 0 || numberOfWidgets > 100)
{
Console.WriteLine("Number of widgets must be between 0 and 100");
}
else
{
return numberOfWidgets;
}
}
}
}
}
评论