簡體   English   中英

如何創建一個 if 語句,從 csv 文件中輸出兩個具有相同分鍾數的學生姓名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM