C#从文件中查找总数(必须是一个简单的答案)

C#从文件中查找总数(必须是一个简单的答案),c#,winforms,C#,Winforms,我基本上拥有的是一个格式化为Name | Value的文件 整个文件中有几个不同的值,对于与if语句匹配的每个值,我只想做total-value,然后返回total来进行下一次计算,所以基本上我有一个文件 1 | 100 2 | 200 A | 30 B | 40 这是我试过的bit,它没有给我我想要的东西,它一直把alpha和numb作为原始值 int alpha = 1000; int numb= 500; int numbtotal = 0; string[] valu = File.Re

我基本上拥有的是一个格式化为Name | Value的文件

整个文件中有几个不同的值,对于与if语句匹配的每个值,我只想做total-value,然后返回total来进行下一次计算,所以基本上我有一个文件

1 | 100
2 | 200
A | 30
B | 40

这是我试过的bit,它没有给我我想要的东西,它一直把alpha和numb作为原始值

int alpha = 1000;
int numb= 500;
int numbtotal = 0;
string[] valu = File.ReadAllLines(subdirectory + "\\" + "values.txt");
foreach (string val in valu)
                {
                  string[] valusplit = val.Split('|');
if(valusplit[0].Equals("1"))
                  {
                      numbtotal = Convert.ToInt32(valusplit[1]);
                      numb = Math.Abs(numb - numbtotal); 
                  }
                  else if(valueplit[0].Equals("2"))
                  {
                      numbtotal = Convert.ToInt32(valusplit[1]);
                      numb = Math.Abs(numb - numbtotal);
                  }

                }

这基本上保持了500-新的ValusSplit值。当我真的想做(500-100=400)然后(400-200=200)得到200的值时。

在你的第二个if语句中,你把
valuspit
拼错为
valueplit
。如果此代码按照所示进行编译(即
valueplit
确实是在此代码之外定义的变量),这将解释为什么会得到错误的结果

在第二个if语句中,您将
valuspit
拼写为
valueplit
。如果此代码按照所示进行编译(即
valueplit
确实是在此代码之外定义的变量),这将解释为什么会得到错误的结果

我认为您的问题是“splitfilesys”而不是“elseif”中的“valuspilt”


我认为您的问题是“splitfilesys”而不是“elseif”中的“valuspilt”


那么,以数字1或2开头的任何一行,您希望以500开头,并一直减去文件的值?您可以尝试查看
Int32.TryParse
作为
Convert.ToInt32
是的,基本上,谢谢。您能为我们提供此文件所需的输出吗?@Mike:看看示例:变量可能存在范围问题。你能发布更多的代码吗?那么,任何以数字1或2开头的行,你想以500开头,并一直减去文件的值?您可以尝试查看
Int32.TryParse
作为
Convert.ToInt32
是的,基本上,谢谢。您能为我们提供此文件所需的输出吗?@Mike:看看示例:变量可能存在范围问题。你能发布更多的代码吗?我想程序员的速记是这样拼写的。很好,但他没有拼错“valuspilt”的第一个实例,他正在寻找“1”值。因此,对于“麻木”的值,他仍然有400而不是500。我认为我们需要看到更多的代码。我想程序员的速记是这样拼写的。很好,但他没有拼错“valuspilt”的第一个实例,他正在寻找“1”值。因此,对于“麻木”的值,他仍然有400而不是500。我想我们需要看到更多的代码。我没有重命名所有的变量,因为我不希望解决方案离问题太远,以至于无法对齐。帖子已经编辑过了。发布的原始代码引用了“splitfilesys”,而不是您在我的答案中看到的情况“2”中的valueSplit。我没有重命名所有变量,因为我不希望解决方案离问题太远,以致无法对齐。发布内容已被编辑。发布的原始代码引用了“splitfilesys”,而不是您在我的回答中看到的情况“2”中的valueSplit。
        int alpha = 1000;
        int numb = 500;
        int numbtotal = 0;

        //string[] values = File.ReadAllLines(subdirectory + "\\" + "values.txt");
        string[] values = new String[] { "1|100", "2|200", "A|30", "B|40" };
        foreach (string value in values)
        {
            string[] valueSplit = value.Split('|');
            switch (valueSplit[0])
            {
                case "1":
                    numb = Math.Abs(numb - Convert.ToInt32(valueSplit[1]));
                    break;

                case "2":
                    numb = Math.Abs(numb - Convert.ToInt32(valueSplit[1]));
                    break;
            }
        }