-1

这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication7
{
    class Program
    {

        #region//Main() Put everything thats finished in here to output it to Console Apllication.
        static void Main(string[] args)
        {
            FirstPart();
        }
        #endregion



        #region
        static void FirstPart() // don't know what else to call this.
        {
            //Console.WriteLine(numS());// commented out

这就是我的问题所在。

            string pi = Console.ReadLine();
            PItoArray = pi.ToCharArray(pi.Min(),pi.Max());
            Console.WriteLine(PItoArray);

我的问题在哪里结束。

        }
        #endregion

        #region //numS() gets number of char in player input.
        //static int numS()
        //{
        //    int num = PlayerInput().Length;
        //    return num;
        //}
        #endregion

        #region//PlayerInput() Gets whatever player writes in console apllication 
        static string PlayerInput()
        {  
            string S = Console.ReadLine();
            return S;
        }
        #endregion

        static char[] PItoArray;



    }
}

现在这些是详细信息(如果您需要更多,请随时回复。):

我尝试使用 num.max 而不是 pi.max,我个人偏好将所有内容拆分,但在这两种情况下,我都会遇到超出范围的异常,即索引为负数或大于我认为的集合应该工作的是它

  1. 将我写的任何内容设置为 pi 变量

  2. 然后将每个 char 拆分为 char 数组

  3. 然后使用 pi 来确定最小值和最大值。

  4. 那么它应该完全按照它的书写方式写出来。前任。""hello" 输入 变成 "hello" 输出。

现在这是我的 3 个问题:

  1. 我的逻辑正确吗?如果不是,请原谅我 18 岁,主要是我喜欢探索我能做什么和不能做什么。

  2. 如何使用 char 数组的最小值和最大值 ex。如果我写你好,我可以使用

    char[] Var = pi.ToCharArray(0,5);

    ConsoleWriteLine(Var);

输出将是“你好”对吗?但是,如果我写了“Hello World”,我将如何获取字符串中的所有字符,无论所述字符串中的字符数量是多少,或者更好的询问方式是如何使用字符串中的字符数量来获取ToCharArray(min,max) 的最小值和最大值,所以如果我写了一个 10 个字母的句子或一个 100 个字母的句子,我永远不会得到超出范围的异常?

  1. 有没有办法在一个简单的 1-5 行代码中做到这一点?我并不懒惰,但更容易更容易,所以为什么不使用它。
4

3 回答 3

0

如果要将字符串转换为完全相同大小的 char 数组,您可以pi.ToCharArray()不带任何参数调用,它会自动创建一个 char 数组,其中包含与原始字符串中完全相同数量的字符。

另请注意,pi.Max()根据 ASCII 表,调用将返回给您的是具有最高字符代码的字符,而不是您所假设的字符串大小。("Hello, world".Max()返回'r'具有代码 114 的字符 - 字符串内的最高字符代码)。

于 2016-09-21T02:44:49.777 回答
0

您的 Max 不能大于 pi.Length,因为这是字符串长度。pi.ToCharArray 中的第一个参数 - Min - 是字符串的起始索引。您可以选择 Min 为 0 到 Max 之间的任何值。pi.ToCharArray 中的第二个参数应该是您想要的 charArray 的长度,可以是从 0 到 Max - Min 的任何值。您还可以阅读此文档:String.ToCharArray(int32 start, int32 length)

于 2016-09-21T02:51:19.750 回答
0

再次您好,感谢您的快速回答,我的做法有所不同(尽管幸运的是,你们两个中的一个人确实这么说。)这就是我想出的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SearchCharInString
{
    class Program
    {



        #region//Main() Put everything thats finished in here to output it to Console Apllication.
        static void Main(string[] args)
        {
            FirstPart();
        }
        #endregion



        #region // HERE IS WHERE CHANGED HAPPENED!!
        static void FirstPart()
        {

            Console.WriteLine(PItoArray());
        }
        #endregion



        #region//PlayerInput() Gets whatever player writes in console apllication 
        static string PlayerInput()
        {
            string S = Console.ReadLine();

            return S;
        }
        #endregion

这就是我改变的

        #region // HERE IS WHERE CHANGED HAPPENED!!
        static char[]PItoArray() 
            {
            string PI = PlayerInput();

            int piLength = PI.Length;

            return PI.ToCharArray(0,piLength);

            }
        #endregion



    }
}

这就是我所说的

#region // HERE IS WHERE CHANGED HAPPENED!!
    static void FirstPart()
    {

        Console.WriteLine(PItoArray());
    }
    #endregion

不过,我会认可您的答案,因为它可以帮助我进行研究。再次感谢各位。我相信现在我应该能够在我的字符中搜索某些东西,甚至可以让它从 if 语句中使用字母索引到此代码中找出某些单词。

于 2016-09-22T04:29:14.373 回答