返回

c#-为什么没有记录所有的数据?

发布时间:2022-04-09 13:53:43 508
# c++# flask

我有一个List里面有他们乘坐我的巴士旅行的信息。
每次我执行一次旅行,我都会生成一个随机数目的乘客(从0到10),并在他们下车时记录他们。

我在10到10万次之间的任何地方运行该程序,只在乘客下车时将其记录到列表中。在最后一站,每个人都会被踢出。

然后我用这段代码将每位乘客的行程写入一个文本文件。

密码

这段代码直接在内部调用static void Main属于Program.cs就在循环完成后。

private static async Task LogData(StatManager statManager)
{
    await File.WriteAllLinesAsync("test_output_1.txt", statManager.LogAllData());
}

Passenger.cs

public int ID {get; private set;}
public int stops {get; private set;} = 0;
public TripInfo trip {get; private set;} 
public Passenger(int passenger_id, int stop_entered)
{
    ID = passenger_id;
    trip = new TripInfo();
    trip.first_stop = stop_entered;
}

public void ExitBus(int exit_stop)
{
    //get called once the passenger exits the bus
    //at this point, the passenger is added to the main list
    trip.exit_stop = exit_stop;
}

public void ArrivedAtStop()
{
    stops++; //stop counter
}

public int[] GetStopsVisited()
{
    int[] stops = new int[trip.stop_count];
    for(int i = 0; i < trip.stop_count; i++)
    {
        stops[i] = trip.first_stop + i;
    }
    return stops;
}

public class TripInfo
{
    public int first_stop;
    public int exit_stop;
    public int stop_count
    {
        get
        {
            if (exit_stop == null) return -1;
            return exit_stop - first_stop;
        }
    }
}

StatManager.cs

public List LifetimePassengers = new List();
public int LifetimePassengerCount {get; private set;} = 0; //gets incremented in every cycle
private float mean;
private int LifetimeStops
{
    get
    {
        return busManager.CurrentStop + 1; //gets an int that was incremented in every cycle
    }
}
public String[] LogAllData()
{
    List toLog = new List();
    toLog.Add("LifetimeStops:"+LifetimeStops.ToString());
    toLog.Add("LifetimePassengers:"+LifetimePassengerCount.ToString());
    toLog.Add("IndividualPassengerData");
    foreach(Passenger p in LifetimePassengers)
    {
        toLog.Add("-");
        toLog.Add($"PassengerID:{p.ID}");
        toLog.Add($"NumberOfStops:{p.stops}");
        toLog.Add($"FirstStop:{p.trip.first_stop}");
        toLog.Add($"ExitStop:{p.trip.exit_stop}");
        string stops = String.Join(",", p.GetStopsVisited());
        toLog.Add($"StopsVisited:[{stops}]");
    }
    return toLog.ToArray();
}

第一行的输出与预期一致,但我得到了以下结果:

...
PassengerID:677
NumberOfStops:2
FirstStop:198
ExitStop:200
Stopsvisited:[19819]
PassengerID:678
NumberOfStops:2
FirstStop:198
ExitStop:200
Stopsvisited:[19819]
PassengerID:679
NumberOfStops:1

所有数据都遵循上述ID模式和一些行程信息。但数据并不完整。上图中,记录的最后一名乘客是679号乘客,但该节目运行了1000站,至少有1000名乘客。此外,数据会突然停止,出现这种意外情况Fi and does not complete the record of passenger number 679.

此外,当我尝试重新运行程序时,它没有输出任何内容。我试着运行了5、10和100个周期,没有差别,也没有输出。

我能做些什么来解决这个问题?

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像