C# Can';无法从控制台读取长字符串
这段代码应该有两行输入C# Can';无法从控制台读取长字符串,c#,string,console-application,C#,String,Console Application,这段代码应该有两行输入 整数个数k 由空格分隔的k个整数 此代码适用于小于230个整数的输入,但不适用于大于230个整数的输入。我的意思是输入1000或更多。问题是什么 我认为整句话不是从控制台读出来的。但是如何阅读整句话呢 using System; using System.IO; using System.Text; using System.Collections.Generic; class MyClass { static void Main(string[] args)
using System;
using System.IO;
using System.Text;
using System.Collections.Generic;
class MyClass
{
static void Main(string[] args)
{
StreamReader reader = new StreamReader(Console.OpenStandardInput());
// Reads the number of integers to input
int k = int.Parse(reader.ReadLine());
List<int> pokemons = new List<int>(k);
string inputLine;
List<string> input = new List<string>(k);
int a;
inputLine = reader.ReadToEnd();
input.AddRange(inputLine.Split(new char[] { ' ' }));
Console.WriteLine(input.Count);
使用系统;
使用System.IO;
使用系统文本;
使用System.Collections.Generic;
类MyClass
{
静态void Main(字符串[]参数)
{
StreamReader=新的StreamReader(Console.OpenStandardInput());
//读取要输入的整数数
int k=int.Parse(reader.ReadLine());
列表口袋妖怪=新列表(k);
字符串输入线;
列表输入=新列表(k);
INTA;
inputLine=reader.ReadToEnd();
input.AddRange(inputLine.Split(新字符[]{''}));
控制台写入线(输入计数);
//输入的大小永远不会超过230。您正在初始化一个列表,因为它将是一个数组。列表的显著特点就是您不需要定义它们的维度。正确的版本:
list pokemons=new list();
(与触发错误的另一个相同)k
是多余的(或者用它来声明一个数组:int[]pokemons=new int[k];
)。顺便说一句,你应该用把你的StreamReader
放在里面(或者在末尾正确地处理它)。另外请注意,Split
有一个重载,这对这种情况更好(只有一个字符):inputLine.Split(“”)
。感谢@varocabas快速回复,但我面临的问题是Console.ReadLine()只读取了string@varocarbas执行新列表(k)
不是多余的,如果您知道您将提前阅读多少条目,您可以通过将该数字输入列表的构造函数来优化您的程序,它将在内部缓冲区中预先分配那么多空间,并且在添加成员时需要更少的调整大小。现在执行输入=新列表(k)AddRange,(输入代码行)……(输入……/代码)我可以考虑冗余,你可以直接做<代码>输入=新列表(输入文件)。(…
直接。您正在初始化一个列表,就像它是一个数组一样。列表的显著特点就是您不需要定义它们的维度。正确的版本:list pokemons=new list();
(与触发错误的另一个相同)k
是多余的(或者用它来声明一个数组:int[]pokemons=new int[k];
)。顺便说一句,你应该用把你的StreamReader
放在里面(或者在末尾正确地处理它)。另外请注意,Split
有一个重载,这对这种情况更好(只有一个字符):inputLine.Split(“”)
。感谢@varocabas快速回复,但我面临的问题是Console.ReadLine()只读取了string@varocarbas执行新列表(k)
不是多余的,如果您知道您将提前阅读多少条目,您可以通过将该数字输入列表的构造函数来优化您的程序,它将在内部缓冲区中预先分配那么多空间,并且在添加成员时需要更少的调整大小。现在执行输入=新列表(k)然后,执行<代码>输入。AddRange(输入行。拆分……/代码>我可以考虑冗余,您可以直接做<代码>输入=新列表(输入行。拆分……/代码>直接)。