Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的输入在途中的某个地方丢失了(打印0秒)_C#_Arrays_Output - Fatal编程技术网

C# 我的输入在途中的某个地方丢失了(打印0秒)

C# 我的输入在途中的某个地方丢失了(打印0秒),c#,arrays,output,C#,Arrays,Output,尝试对包含以下内容的数据列表进行排序: 文本。文件当前看起来像这样,但将扩展到包含更多,大约100个左右。900只是用作上限 21、f、s、14 41、f、m、22 12,m,s,12 11,f,s,8 29,m,m,4 6,m,s,12 9,f,s,2 30,f,s,1 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; class Pro

尝试对包含以下内容的数据列表进行排序:

文本。文件当前看起来像这样,但将扩展到包含更多,大约100个左右。900只是用作上限

21、f、s、14

41、f、m、22

12,m,s,12

11,f,s,8

29,m,m,4

6,m,s,12

9,f,s,2

30,f,s,1

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

class Program
{
    const int SIZE = 900;
    const int SIZEDISTRICT = 22;
    const int RANGE = 5;
    static void Main()
    {   
        //These arrays will hold the split data from a text file.
        int[] districtDataD = new int[900];
        string[] districtDataG = new string[900];
        string[] districtDataM = new string[900];
        int[] districtDataA = new int[900];

        //countDistrict will hold how many hypothetical people in each hypothetical district and 
        //ages will hold how many hypothetical people between certain hypothetical ages.
        int[] countDistrict = new int[SIZEDISTRICT];
        int[] ages = new int[RANGE] { 0, 18, 30, 45, 65};


        //Modules
        ReadFile(districtDataD, districtDataG, districtDataM,districtDataA);
        CountPopulation(districtDataD, countDistrict);
        AgeRanges(districtDataA, ages);
        DisplayData(countDistrict, districtDataA, ages);
    }//End Main


    //This module splits and inserts the data into the four first arrays
    static void ReadFile(int[] districtDataD, string[] districtDataG, string[] districtDataM, int[] districtDataA)
    {
        string[] lines = File.ReadAllLines("census.txt");
        int i = 0;

        while (i < SIZE  && i < 0)
        {
            foreach (string line in File.ReadAllLines("census.txt"))
            {
                string[] parts = line.Split(',');

                districtDataD[i] = int.Parse(parts[0]);
                districtDataG[i] = parts[1];
                districtDataM[i] = parts[2];
                districtDataA[i] = int.Parse(parts[3]);
                i++;
            }
        }
    }
    //This module counts how many hypothetical people are in each fictional district
   static void CountPopulation(int[] districtDataD, int[] countDistrict)
    {
        int i = 0;
        for (i = 0; i < districtDataD.Length; i++)
        {
            if (districtDataD[i] > 0 && districtDataD[i] < districtDataD.Length)
            {
                districtDataD[countDistrict[i]]
                    ++;
            }
        }
    }


    //This module sorts the ages into 0-18, 19-30, 31-45, 46-65, and 65 and up
     private static void AgeRanges(int[] districtDataA, int[] ages)
     {
         int idx = 0;
         for (idx = 0; idx < districtDataA.Length && ages[idx] > districtDataA[idx]; idx++)
         {

             ages[idx] = districtDataA[idx];
         }
     }


    //This module displays the data
     static void DisplayData(int[] countDistrict, int[] districtDataA, int[] ages)
    {
        int index = 0;
        for (index = 0; index < countDistrict.Length; index++)
        {
            Console.WriteLine(" District {0}: {1}", index + 1, countDistrict[index]);
        }

        int x = 0;
        for (x = 0; x < ages.Length; x++)
        {
            Console.WriteLine("Ages over {0} : {1}", ages[x], districtDataA[x]);
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.IO;
班级计划
{
常数int SIZE=900;
常数int SIZEDISTRICT=22;
常数int范围=5;
静态void Main()
{   
//这些数组将保存文本文件中的分割数据。
int[]districtDataD=新int[900];
string[]districtDataG=新字符串[900];
string[]districtDataM=新字符串[900];
int[]districtDataA=新int[900];
//countDistrict将在每个假设区容纳多少假设人员,以及
//年龄将容纳在特定假设年龄之间的假设人数。
int[]countDistrict=新int[SIZEDISTRICT];
int[]ages=新的int[范围]{0,18,30,45,65};
//模块
ReadFile(districtDataD、districtDataG、districtDataM、districtDataA);
CountPopulation(CountDistrictDatad,countDistrict);
Agranges(地区数据a,年龄);
显示数据(countDistrict、districtDataA、ages);
}//端干管
//此模块将数据拆分并插入到前四个数组中
静态无效读取文件(int[]districtDataD,string[]districtDataG,string[]districtDataM,int[]districtDataA)
{
string[]lines=File.ReadAllLines(“census.txt”);
int i=0;
而(i0&&districtDataD[i]districtDataA[idx];idx++)
{
年龄[idx]=地区数据[idx];
}
}
//此模块显示数据
静态无效显示数据(int[]countDistrict,int[]districtDataA,int[]ages)
{
int指数=0;
用于(索引=0;索引
当前输出如下所示:


我的数据在哪里丢失了?

问题出在这一行

while (i < SIZE && i < 0)
while(i
这个循环从不执行。换成这个

while (i < SIZE && i <= 0)
{
    foreach (string line in File.ReadAllLines("census.txt"))
    {
        if (!string.IsNullOrEmpty(line))
        {
            string[] parts = line.Split(',');

            districtDataD[i] = int.Parse(parts[0]);
            districtDataG[i] = parts[1];
            districtDataM[i] = parts[2];
            districtDataA[i] = int.Parse(parts[3]);
            i++;
        }
    }
}

while(iReadFile
错误。请尝试类似的方法

static void ReadFile(int[] districtDataD, string[] districtDataG, string[] districtDataM, int[] districtDataA)
{
   // Read in the file contents
    string[] lines = File.ReadAllLines("census.txt");
    int i =0;
    //iterate through each line
    foreach(var line in lines)
    {
      //split the line by a comma
      string[] parts = line.Split(',');

            districtDataD[i] = int.Parse(parts[0]);
            districtDataG[i] = parts[1];
            districtDataM[i] = parts[2];
            districtDataA[i] = int.Parse(parts[3]);
            i++;
    }

}

您当前正在读取文件并将其分配给
,然后再次读取文件并将值分配给
。如果使用
foreach
,您可以轻松地循环每一行,而无需跟踪您所处的行。

您尝试调试它吗?这一行正确吗
(i
在您的
ReadFile
方法中?快速将其插入Visual Studio,我可以看到上面的@Barry,这确实是正确的。我将其更改为(i0)这是一样的。谢谢你捕捉到它。@Barry问题在这一行。这永远不会返回true。所以循环永远不会执行。如果你善于调试,那么你就会知道问题出在哪里。当第二次执行循环时,它会崩溃。因为这一行是空字符串。我不知道这是否是一个逻辑错误r这可能会在桌面检查或与C#相关的事情中被发现。@sBotenderizer,一次一个问题。为另一个问题做一个新的主题。他的答案有效吗?如果有效,接受它,继续,研究你的下一个问题,如果你被卡住了,让我们知道。只适用于年龄,即使如此,打印出年龄本身,而不是每个年龄的次数e出现了。