Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';无法从控制台读取长字符串_C#_String_Console Application - Fatal编程技术网

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)

这段代码应该有两行输入

  • 整数个数k
  • 由空格分隔的k个整数
  • 此代码适用于小于230个整数的输入,但不适用于大于230个整数的输入。我的意思是输入1000或更多。问题是什么

    我认为整句话不是从控制台读出来的。但是如何阅读整句话呢

    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(输入行。拆分……/代码>我可以考虑冗余,您可以直接做<代码>输入=新列表(输入行。拆分……/代码>直接)。