C# 在C上添加整数列表#

C# 在C上添加整数列表#,c#,C#,我在做一个练习,要求有人输入一个数字列表,然后当他们输入“ok”时,程序会添加他们输入的数字列表。现在,无论添加多少个数字,我的程序都返回0。我怀疑问题出在最后3行代码上,但无法找出我做错了什么。 很抱歉,代码效率太低。这只是我第三天的学习,所以我正试图以一种对我来说有意义的方式来安排它,尽管我知道有很多更有效的方法可以做到这一点 static void Main(string[] args) { bool isOk = new bool(); bool is

我在做一个练习,要求有人输入一个数字列表,然后当他们输入“ok”时,程序会添加他们输入的数字列表。现在,无论添加多少个数字,我的程序都返回0。我怀疑问题出在最后3行代码上,但无法找出我做错了什么。 很抱歉,代码效率太低。这只是我第三天的学习,所以我正试图以一种对我来说有意义的方式来安排它,尽管我知道有很多更有效的方法可以做到这一点

static void Main(string[] args)
{
    bool isOk = new bool();          
    bool isNumber = new bool();

    var listOfNumbers = new List<string>();
    var text = "0";

    int ignoreMe = new int();
    int sumOfNumbers = new int();
    int numberNum = new int();
    var listOfNumbersNum = new List<int>();

    while (!isOk)
    {
        Console.WriteLine("Enter a number, or ok to finish");
        text = Console.ReadLine();
        bool IsNumber = Int32.TryParse(text, out ignoreMe);
        if (isNumber)
        {
            numberNum = Int32.Parse(text);
            listOfNumbersNum.Add(numberNum);
        }
        else
        {
            if (text.Equals("ok", StringComparison.OrdinalIgnoreCase))
            {
                sumOfNumbers = listOfNumbersNum.Sum();
                Console.WriteLine(sumOfNumbers);
                isOk = true;
            }
        }
    }
}
static void Main(字符串[]args)
{
bool isOk=新bool();
bool isNumber=新bool();
var listofNumber=新列表();
var text=“0”;
int ignoreMe=new int();
int sumofNumber=新int();
int numberNum=新的int();
var listofNumbersum=新列表();
而(!isOk)
{
Console.WriteLine(“输入一个数字,或确定完成”);
text=Console.ReadLine();
bool IsNumber=Int32.TryParse(text,out ignoreMe);
如果(isNumber)
{
numberNum=Int32.Parse(文本);
编号添加列表(编号num);
}
其他的
{
if(text.Equals(“ok”,StringComparison.OrdinalIgnoreCase))
{
SumofNumber=ListofNumber.Sum();
控制台写入线(SumofNumber);
isOk=真;
}
}
}
}

问题在于将值解析为ignoreMe。然后将numberNum添加到列表中。numberNum的初始值为0,并且从未更改过。 此代码应适用于您:

static void Main(string[] args)
{
    bool isOk = new bool();
    var listOfNumbers = new List<string>();
    string text;

    int numberNum;
    var listOfNumbersNum = new List<int>();

    while (!isOk)
    {
        Console.WriteLine("Enter a number, or ok to finish");
        text = Console.ReadLine();
        bool isNumber = Int32.TryParse(text, out numberNum);
        if (isNumber)
        {
            listOfNumbersNum.Add(numberNum);
        }
        else
        {
            if (text.Equals("ok", StringComparison.OrdinalIgnoreCase))
            {
                int sumOfNumbers = listOfNumbersNum.Sum();
                Console.WriteLine(sumOfNumbers);
                isOk = true;
            }

        }

    }
}
static void Main(字符串[]args)
{
bool isOk=新bool();
var listofNumber=新列表();
字符串文本;
整数;
var listofNumbersum=新列表();
而(!isOk)
{
Console.WriteLine(“输入一个数字,或确定完成”);
text=Console.ReadLine();
bool isNumber=Int32.TryParse(文本,out numberNum);
如果(isNumber)
{
编号添加列表(编号num);
}
其他的
{
if(text.Equals(“ok”,StringComparison.OrdinalIgnoreCase))
{
int-sumOfNumbers=listofNumbersum.Sum();
控制台写入线(SumofNumber);
isOk=真;
}
}
}
}

问题在于将值解析为ignoreMe。然后将numberNum添加到列表中。numberNum的初始值为0,并且从未更改过。 此代码应适用于您:

static void Main(string[] args)
{
    bool isOk = new bool();
    var listOfNumbers = new List<string>();
    string text;

    int numberNum;
    var listOfNumbersNum = new List<int>();

    while (!isOk)
    {
        Console.WriteLine("Enter a number, or ok to finish");
        text = Console.ReadLine();
        bool isNumber = Int32.TryParse(text, out numberNum);
        if (isNumber)
        {
            listOfNumbersNum.Add(numberNum);
        }
        else
        {
            if (text.Equals("ok", StringComparison.OrdinalIgnoreCase))
            {
                int sumOfNumbers = listOfNumbersNum.Sum();
                Console.WriteLine(sumOfNumbers);
                isOk = true;
            }

        }

    }
}
static void Main(字符串[]args)
{
bool isOk=新bool();
var listofNumber=新列表();
字符串文本;
整数;
var listofNumbersum=新列表();
而(!isOk)
{
Console.WriteLine(“输入一个数字,或确定完成”);
text=Console.ReadLine();
bool isNumber=Int32.TryParse(文本,out numberNum);
如果(isNumber)
{
编号添加列表(编号num);
}
其他的
{
if(text.Equals(“ok”,StringComparison.OrdinalIgnoreCase))
{
int-sumOfNumbers=listofNumbersum.Sum();
控制台写入线(SumofNumber);
isOk=真;
}
}
}
}
您的问题在于:

bool IsNumber = Int32.TryParse(text, out ignoreMe);

if (isNumber)
{
    // rest of code omitted
您正在创建一个名为
IsNumber
的新变量来捕获
int.TryParse
的返回值,但您正在检查
if
条件中原始变量
IsNumber
的值。相反,您应该只将结果分配给原始变量:

isNumber = Int32.TryParse(text, out ignoreMe);

if (isNumber)
{
    // rest of code omitted

请注意,您根本不需要声明变量来捕获此结果,因为您只使用了一次。您可以将
TryParse
调用放入
if
条件中:

if (Int32.TryParse(text, out ignoreMe))
{
    listOfNumbersNum.Add(ignoreMe);
}
// Console.ReadLine() will never return null, so you can remove that check
else if (text.Equals("ok", StringComparison.OrdinalIgnoreCase))
{
    // And since you only use sum once, you don't need to capture it in a variable
    Console.WriteLine("Result of sum: " + listOfNumbersNum.Sum());
    isOk = true;
}
你的问题是:

bool IsNumber = Int32.TryParse(text, out ignoreMe);

if (isNumber)
{
    // rest of code omitted
您正在创建一个名为
IsNumber
的新变量来捕获
int.TryParse
的返回值,但您正在检查
if
条件中原始变量
IsNumber
的值。相反,您应该只将结果分配给原始变量:

isNumber = Int32.TryParse(text, out ignoreMe);

if (isNumber)
{
    // rest of code omitted

请注意,您根本不需要声明变量来捕获此结果,因为您只使用了一次。您可以将
TryParse
调用放入
if
条件中:

if (Int32.TryParse(text, out ignoreMe))
{
    listOfNumbersNum.Add(ignoreMe);
}
// Console.ReadLine() will never return null, so you can remove that check
else if (text.Equals("ok", StringComparison.OrdinalIgnoreCase))
{
    // And since you only use sum once, you don't need to capture it in a variable
    Console.WriteLine("Result of sum: " + listOfNumbersNum.Sum());
    isOk = true;
}
第一个错误

bool IsNumber = Int32.TryParse(text, out ignoreMe);
if (isNumber)
IsNumber和IsNumber不是一回事

相同的代码,稍作修改

static void Main(string[] args)
{
    var isOk = false;
    var listOfNumbersNum = new List<int>();

    while (!isOk)
    {
        Console.WriteLine("Enter a number, or ok to finish");
        var text = Console.ReadLine();
        var isNumber = int.TryParse(text, out var numberNum);
        if (isNumber)
        {
            listOfNumbersNum.Add(numberNum);
        }
        else
        {
            if (text != null && text.Equals("ok", StringComparison.OrdinalIgnoreCase))
            {
                var sumOfNumbers = listOfNumbersNum.Sum();
                Console.WriteLine("Result of sum: " + sumOfNumbers);
                isOk = true;
            }
        }
    }

    Console.WriteLine("Press any key to exit");
    Console.ReadLine();
}
static void Main(字符串[]args)
{
var isOk=假;
var listofNumbersum=新列表();
而(!isOk)
{
Console.WriteLine(“输入一个数字,或确定完成”);
var text=Console.ReadLine();
var isNumber=int.TryParse(文本,out var numberNum);
如果(isNumber)
{
编号添加列表(编号num);
}
其他的
{
if(text!=null&&text.Equals(“ok”,StringComparison.OrdinalIgnoreCase))
{
var sumOfNumbers=listofNumbersum.Sum();
Console.WriteLine(“总和结果:+sumOfNumbers”);
isOk=真;
}
}
}
Console.WriteLine(“按任意键退出”);
Console.ReadLine();
}
中的第一个错误

bool IsNumber = Int32.TryParse(text, out ignoreMe);
if (isNumber)
IsNumber和IsNumber不是一回事

相同的代码,稍作修改

static void Main(string[] args)
{
    var isOk = false;
    var listOfNumbersNum = new List<int>();

    while (!isOk)
    {
        Console.WriteLine("Enter a number, or ok to finish");
        var text = Console.ReadLine();
        var isNumber = int.TryParse(text, out var numberNum);
        if (isNumber)
        {
            listOfNumbersNum.Add(numberNum);
        }
        else
        {
            if (text != null && text.Equals("ok", StringComparison.OrdinalIgnoreCase))
            {
                var sumOfNumbers = listOfNumbersNum.Sum();
                Console.WriteLine("Result of sum: " + sumOfNumbers);
                isOk = true;
            }
        }
    }

    Console.WriteLine("Press any key to exit");
    Console.ReadLine();
}
static void Main(字符串[]args)
{
var isOk=假;
var listofNumbersum=新列表();
而(!isOk)
{
Console.WriteLine(“输入一个数字,或确定完成”);
var text=Console.ReadLine();
var isNumber=int.TryParse(文本,out var numberNum);
如果(isNumber)
{
编号添加列表(编号num);
}
其他的
{
if(text!=null&&text.Equals(“ok”,StringComparison.OrdinalIgnoreCase))
{
var sumOfNumbers=listofNumbersum.Sum();
Console.WriteLine(“总和的结果:”