Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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# 使用C为未知行数循环#_C#_.net_Arrays_Text Parsing - Fatal编程技术网

C# 使用C为未知行数循环#

C# 使用C为未知行数循环#,c#,.net,arrays,text-parsing,C#,.net,Arrays,Text Parsing,我需要对所有行循环这个循环,而不仅仅是索引为2的行。另外,我在双重解析中得到了一个错误 有没有一种有效的方法可以做到以下几点 该文件可以有不同长度的行。因此,我需要维护一个数组来存储每行的大小 public static void ReadFile() { int lineNo; List<List<double>> numbers = new List<List<double>>(); f

我需要对所有行循环这个循环,而不仅仅是索引为2的行。另外,我在双重解析中得到了一个错误

有没有一种有效的方法可以做到以下几点

该文件可以有不同长度的行。因此,我需要维护一个数组来存储每行的大小

 public static void ReadFile()
    {
        int lineNo;
        List<List<double>> numbers = new List<List<double>>();
        foreach (string line in File.ReadAllLines("Data.txt"))
        {
            var list = new List<float>();
            foreach (string s in line.Split(new[]{',', ' '}, StringSplitOptions.RemoveEmptyEntries))
            {
                int i;
                if(double.TryParse(s, out i))
                {
                    list.Add(i);
                    lineNo++;
                }
            }
            numbers.Add(list);
        }

        var specialNumber = numbers[3][4];        // gives line 3 number 4
        var specialLine = numbers[2].ToArray();   //  gives an array of numbers of line 2

        double[] rowTotal;
        double[] squareRowTotal;
        double[] rowMean;

        //I need to loop this loop for all rows and not just the row indexed by 2. Also I am getting an error in the double parsing.

        for (int j=0; j<(specialLine.Length); j++)
        {
            rowTotal[2] = rowTotal[2] + numbers[2][j];
            squareRowTotal[2] = squareRowTotal[2] + numbers[2][j] * numbers[2][j];
        }

        for (int k = 0; k < lineNo; k++)
        {
            rowMean[k] = rowTotal[k] / numbers[k].Length;
        }
    }
publicstaticvoidreadfile()
{
国际线路号;
列表编号=新列表();
foreach(File.ReadAllLines(“Data.txt”)中的字符串行)
{
var list=新列表();
foreach(第.Split行中的字符串s(新[]{','','},StringSplitOptions.RemoveEmptyEntries))
{
int i;
if(双锥虫(s,out i))
{
列表.添加(i);
lineNo++;
}
}
编号。添加(列表);
}
var specialNumber=numbers[3][4];//给出第3行的数字4
var specialLine=numbers[2]。ToArray();//给出第2行的数字数组
双倍总收入;
双倍【】平方【】总计;
双平均值;
//我需要对所有行循环这个循环,而不仅仅是索引为2的行。而且我在双重解析中得到了一个错误。

对于(int j=0;jbtw),最好拆分数据访问逻辑和数据处理逻辑。还要考虑声明一些类型,该类型将具有名称,描述双值的性质。例如

public class BowlingGame
{
   private List<double> _scores = new List<double>();

   public BowlingGame(IEnumerable<double> scores)
   {
       _scores.AddRange(scores);
   }

   public double Total
   {
       get { return _scores.Sum(); }
   }

   // implementation for SquareTotal and Mean
}
您的代码有什么问题?您已声明

List<List<double>> numbers = new List<List<double>>();
}

公共静态void ReadFile()
{
列表编号=新列表();
foreach(文件.ReadAllLines(@“c:\temp\test.csv”)中的字符串行)
{
var list=新列表();
foreach(第.Split行中的字符串s(新[]{','','},StringSplitOptions.RemoveEmptyEntries))
{
双i;
if(双锥虫(s,out i))
{
列表.添加(i);
}
}
编号。添加(列表);
}
double[]rowTotal=新的double[numbers.Count];
double[]squareRowTotal=新的double[numbers.Count];
double[]rowMean=新的double[number.Count];
for(int row=0;rowv*v).Sum();
rowMean[row]=rowTotal[row]/rowTotal.Count();
}
}

我认为您的答案应该是这样的(我使用了一些LINQ而不是循环!):

public void ReadFile()
{
int lineNo=0;
列表编号=新列表();
foreach(File.ReadAllLines(“Data.txt”)中的字符串行)
{
var list=新列表();
foreach(第.Split行中的字符串s(新[]{','','},StringSplitOptions.RemoveEmptyEntries))
{
双i;
if(双锥虫(s,out i))
{
列表.添加(i);
lineNo++;
}
}
编号。添加(列表);
}
var rowsTotal=新列表(numbers.Count);
var squareRowTotal=新列表(number.Count);
var rowMean=新列表(number.Count);
rowsTotal.AddRange(numbers.Select(row=>row.Sum());
AddRange(numbers.Select(row=>row.Sum(d=>d*d));
对于(int k=0;k
foreach(var game in GameParser.ParseFile())
{
    Console.WriteLine(game.Total);
    Console.WriteLine(game.Mean);
}
List<List<double>> numbers = new List<List<double>>();
 var list = new List<int>();
double[] rowTotal = new double[numbers.Count];

for (int rowIndex = 0; rowIndex < numbers.Count; rowIndex++)            
    rowTotal[rowIndex] = numbers[rowIndex].Sum();
    public static void ReadFile()
    {
        List<List<double>> numbers = new List<List<double>>();
        foreach (string line in File.ReadAllLines(@"c:\temp\test.csv"))
        {
            var list = new List<double>();
            foreach (string s in line.Split(new[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries))
            {
                double i;
                if (Double.TryParse(s, out i))
                {
                    list.Add(i);
                }
            }
            numbers.Add(list);
        }

        double[] rowTotal = new double[numbers.Count];
        double[] squareRowTotal = new double[numbers.Count];
        double[] rowMean = new double[numbers.Count];

        for(int row = 0; row < numbers.Count; row++)
        {
            var values = numbers[row].ToArray();

            rowTotal[row] = values.Sum();
            squareRowTotal[row] = values.Select(v => v * v).Sum();
            rowMean[row] = rowTotal[row] / rowTotal.Count();
        }
    }
public void ReadFile()
{
    int lineNo = 0;
    List<List<double>> numbers = new List<List<double>>();
    foreach (string line in File.ReadAllLines("Data.txt"))
    {
        var list = new List<double>();
        foreach (string s in line.Split(new[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries))
        {
            double i;
            if (double.TryParse(s, out i))
            {
                list.Add(i);
                lineNo++;
            }
        }
        numbers.Add(list);
    }

    var rowsTotal = new List<double>(numbers.Count);
    var squareRowTotal = new List<double>(numbers.Count);
    var rowMean = new List<double>(numbers.Count);

    rowsTotal.AddRange(numbers.Select(row => row.Sum()));
    squareRowTotal.AddRange(numbers.Select(row => row.Sum(d => d*d)));


    for (int k = 0; k < lineNo; k++)
    {
        rowMean[k] = rowsTotal[k] / numbers[k].Count;
    }
}