将文本文件读入列表时无法从 'System.IO.FileStream' 转换为 'int'
Cannot convert from 'System.IO.FileStream' to 'int' when reading text file into a List
我只想让程序读取一个 .txt 文件,取出文件中的任何内容,然后将其输入到列表中。但它会告诉我我无法转换它(无论我是否将变量设置为 var、string、int 或其他)我尝试使用 int.TryParse、Convert.ToInt32() 等。而 Convert.ToInt32关闭它,当我 运行 程序崩溃时。
static void Main(string[] args)
{
string listPath = @"K:\listData\listData.txt";
int listDataSum = 0;
int listDataMax = 0;
int listDataMin = 0;
string userInput = null;
var numeralListData = System.IO.File.OpenRead(listPath);
var listData = new List<int>(numeralListData);
listDataSum = listData.Sum();
listDataMax = listData.Max();
listDataMin = listData.Min();
Console.WriteLine(
"Please input the data you wish to see, type 'help' for what to type");
userInput = Console.ReadLine();
userInput.ToLower();
if (userInput == "sum")
{
Console.WriteLine("The sum of the list is " + listDataSum);
}
编辑:如果问题重复,请发送 link,我尝试了搜索功能,所有其他问题都太复杂了,像我这样经验不足的人无法理解。
如果您尝试从文件中读取整数,然后获取它们的最小值、最大值和总和,您需要将每一行读入一个字符串数组,然后尝试将每个字符串转换为 int 并将其添加到一个列表。
static void Main(string[] args)
{
string listPath = @"K:\listData\listData.txt";
int listDataSum = 0;
int listDataMax = 0;
int listDataMin = 0;
string userInput = null;
var fileReader = new System.IO.StreamReader(listPath);
List<string> stringsFromFile = new List<string>();
string lineOfText;
while ((lineOfText = fileReader.ReadLine()) != null)
{
stringsFromFile.Add(lineOfText);
}
List<int> intsFromFile = new List<int>();
foreach(string s in stringsFromFile)
{
int temp = 0;
if(Int32.TryParse(s, out temp))
{
intsFromFile.Add(temp);
}
}
listDataSum = intsFromFile.Sum();
listDataMax = intsFromFile.Max();
listDataMin = intsFromFile.Min();
Console.WriteLine("Please input the data you wish to see, type 'help' for what to type");
userInput = Console.ReadLine();
userInput.ToLower();
if (userInput == "sum")
{
Console.WriteLine("The sum of the list is " + listDataSum);
}
}
假设每个数字在您的文本文件中位于不同的行
- 首先阅读所有行
- 使用
TryParse
从 string
到 int
将所有行转换为新列表或数组
- 直接用一个方法和参数来操作做计算(所以可以复用)。现在您正在使用
Max();
等进行计算,如果用户不询问,您可能不会使用这些计算。
示例:(与您的方法略有不同,希望您能从中吸取教训)
static void Main(string[] args)
{
string listPath = @"K:\listData\listData.txt";
var lines = File.ReadAllLines(listPath).ToList();
var number = 0;
var numbers = lines.Where(line => int.TryParse(line, out number)).Select(n => number).ToList();
Console.WriteLine("Please input the data you wish to see, type 'help' for what to type");
string userInput = Console.ReadLine().ToLower();
if (userInput == "sum")
{
Console.WriteLine("The sum of the list is " + ListDataSum(numbers));
}
Console.ReadLine();
}
private static int ListDataSum(List<int> list)
{
return list.Sum();
}
我只想让程序读取一个 .txt 文件,取出文件中的任何内容,然后将其输入到列表中。但它会告诉我我无法转换它(无论我是否将变量设置为 var、string、int 或其他)我尝试使用 int.TryParse、Convert.ToInt32() 等。而 Convert.ToInt32关闭它,当我 运行 程序崩溃时。
static void Main(string[] args)
{
string listPath = @"K:\listData\listData.txt";
int listDataSum = 0;
int listDataMax = 0;
int listDataMin = 0;
string userInput = null;
var numeralListData = System.IO.File.OpenRead(listPath);
var listData = new List<int>(numeralListData);
listDataSum = listData.Sum();
listDataMax = listData.Max();
listDataMin = listData.Min();
Console.WriteLine(
"Please input the data you wish to see, type 'help' for what to type");
userInput = Console.ReadLine();
userInput.ToLower();
if (userInput == "sum")
{
Console.WriteLine("The sum of the list is " + listDataSum);
}
编辑:如果问题重复,请发送 link,我尝试了搜索功能,所有其他问题都太复杂了,像我这样经验不足的人无法理解。
如果您尝试从文件中读取整数,然后获取它们的最小值、最大值和总和,您需要将每一行读入一个字符串数组,然后尝试将每个字符串转换为 int 并将其添加到一个列表。
static void Main(string[] args)
{
string listPath = @"K:\listData\listData.txt";
int listDataSum = 0;
int listDataMax = 0;
int listDataMin = 0;
string userInput = null;
var fileReader = new System.IO.StreamReader(listPath);
List<string> stringsFromFile = new List<string>();
string lineOfText;
while ((lineOfText = fileReader.ReadLine()) != null)
{
stringsFromFile.Add(lineOfText);
}
List<int> intsFromFile = new List<int>();
foreach(string s in stringsFromFile)
{
int temp = 0;
if(Int32.TryParse(s, out temp))
{
intsFromFile.Add(temp);
}
}
listDataSum = intsFromFile.Sum();
listDataMax = intsFromFile.Max();
listDataMin = intsFromFile.Min();
Console.WriteLine("Please input the data you wish to see, type 'help' for what to type");
userInput = Console.ReadLine();
userInput.ToLower();
if (userInput == "sum")
{
Console.WriteLine("The sum of the list is " + listDataSum);
}
}
假设每个数字在您的文本文件中位于不同的行
- 首先阅读所有行
- 使用
TryParse
从string
到int
将所有行转换为新列表或数组
- 直接用一个方法和参数来操作做计算(所以可以复用)。现在您正在使用
Max();
等进行计算,如果用户不询问,您可能不会使用这些计算。
示例:(与您的方法略有不同,希望您能从中吸取教训)
static void Main(string[] args)
{
string listPath = @"K:\listData\listData.txt";
var lines = File.ReadAllLines(listPath).ToList();
var number = 0;
var numbers = lines.Where(line => int.TryParse(line, out number)).Select(n => number).ToList();
Console.WriteLine("Please input the data you wish to see, type 'help' for what to type");
string userInput = Console.ReadLine().ToLower();
if (userInput == "sum")
{
Console.WriteLine("The sum of the list is " + ListDataSum(numbers));
}
Console.ReadLine();
}
private static int ListDataSum(List<int> list)
{
return list.Sum();
}