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