[英]how do i create an if statement that outputs two names of students who have the same number of minutes from csv file
我正在嘗試從 CSV 文件中輸出兩個具有相同分鍾數的學生姓名
輸入文件 :
ID、姓氏、名字、電話號碼、分鍾
1,Doe,約翰,905-555-5555,1020
2,巴內特,考特尼,905-666-6666,112
3,莫里森,吉姆,905-777-7777,912
4,多伊,簡,905-222-2222,1020
5,米切爾,喬尼,416-333-3333,112
(忽略每行之間的空格)
這里 Courtney 和 Joni 的最小分鍾數相同......我需要輸出他們的名字
我的代碼是:
// open input file
StreamReader sr = new StreamReader("input.txt");
{
// initialize variables
int x=0,total= 0; double average=0;
string? titles,lastFirst;
string [ ] info, titlesSplit; int [ ] mins= new int [5]; string[,] myName = new string[5,5];
{
titles =sr.ReadLine();
titlesSplit = titles.Split(',');
for (x=0;x < 5; x++)
{
System.Console.Write(titlesSplit[x] + " ");
}
System.Console.WriteLine();
System.Console.WriteLine("-------------------------------------------------");
for(x = 0; x < 5 ; x++)
{
lastFirst = sr.ReadLine();
info = lastFirst.Split(',');
for (int k =0; k<5; k ++)
{
myName[x,k]= info[k];
}
}
int maxMin = Int32.MinValue;
int minMin = Int32.MaxValue;
string? maxName = " ";
string? maxLastName = " ";
string? minName=" ";
string? minLastName = " ";
for (int l = 0; l<5; l++)
{
for (int k =0; k <5;k++)
{
System.Console.Write(myName[l,k] + " ");
}
System.Console.WriteLine();
if (Convert.ToInt32(myName[l,4]) > maxMin)
{
maxMin = Convert.ToInt32(myName[l,4]);
maxName = myName[l,1];
maxLastName= myName[l,2];
//if statement to output two names of students who have the same number of mins
}
if(Convert.ToInt32(myName[l,4]) > minMin );
{
minMin= Convert.ToInt32(myName[l,4]);
minName= myName[l,1];
minLastName= myName[l,2];
//if statement to output two names of students who have the same number of
mins
}
total = (total + Convert.ToInt32(myName[l, 4]));
}
average = (total / 5);
System.Console.WriteLine("-------------------------------------------------");
System.Console.WriteLine("Minimum: " + minName +" " + minLastName +" " + minMin);
System.Console.WriteLine("Maximum: " + maxName +" " + maxLastName+ " "+ maxMin);
System.Console.WriteLine("Average: " + average);
}
}
sr.Close();
我冒昧地更改了您的代碼。 例如,我認為為您的行條目創建一個模型類是個好主意:
public class Person
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public int Minutes { get; set; }
}
輸出具有最少分鍾數的條目名稱的代碼可能如下所示:
// open input file
using StreamReader sr = new StreamReader(Path);
List<Person> Persons = new();
_ = sr.ReadLine(); // ignore first line
while (!sr.EndOfStream)
{
var line = sr.ReadLine();
var values = line!.Split(',');
Persons.Add(new Person
{
ID = int.Parse(values[0]),
LastName = values[1],
FirstName = values[2],
PhoneNumber = values[3],
Minutes = int.Parse(values[4])
});
}
foreach(var person in Persons.OrderBy(p => p.Minutes).GroupBy(m => m.Minutes).First())
{
Console.WriteLine(person.FirstName);
}
為解析添加更多檢查可能是個好主意,如果您有大量數據,可能會考慮一些性能改進,但總的來說這應該給出一些想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.