C# 我正在尝试新命令,如Indexof(),但遇到了问题

C# 我正在尝试新命令,如Indexof(),但遇到了问题,c#,string,C#,String,嘿,我对C#还是个新手,我不明白为什么我现在会出错。我写了这个代码来获取一个字符串,并将每个字符在字母表中上移三位。现在,它只返回相同的字符串,但我希望它返回字符串的加密版本 namespace Cipher { class Program { static void Main(string[] args) { string abc = "abcdefghijklmnopqrstuvwxyz";

嘿,我对C#还是个新手,我不明白为什么我现在会出错。我写了这个代码来获取一个字符串,并将每个字符在字母表中上移三位。现在,它只返回相同的字符串,但我希望它返回字符串的加密版本

namespace Cipher
{
    class Program
    {
        static void Main(string[] args)
        {          

            string abc = "abcdefghijklmnopqrstuvwxyz";

            Console.WriteLine("Type in something you want to encrypt, using only lowercase letters.");
            string s = Console.ReadLine();

            for (int i = 0; i == (s.Length - 1); i++)
            {
                string a = s.Substring(i, 1);

                int x = abc.IndexOf(a, 0, (abc.Length - 1));
                x = x + 3;

                if (x >= s.Length)
                {
                    x = x - s.Length;
                }
                string b = s.Substring(x, 1);

                s = s.Replace(a, b);
            }

            Console.WriteLine(s);

            Console.ReadKey();
        }
    }
}

纠正for循环条件。此外,您的程序也有索引外错误。 你能详细说明你尝试的加密算法吗

string abc = "abcdefghijklmnopqrstuvwxyz";

        Console.WriteLine("Type in something you want to encrypt, using only lowercase letters.");
        var s = Console.ReadLine();
        if(s == null) return;
        for (var i = 0; i < s.Length; i++)
        {
            var a = s.Substring(i, 1);

            var x = abc.IndexOf(a, 0, abc.Length - 1, StringComparison.Ordinal);
            x = x + 3;

            if (x >= s.Length)
            {
                x = x - s.Length;
            }
            var b = s.Substring(x, 1);

            s = s.Replace(a, b);
        }

        Console.WriteLine(s);

        Console.ReadKey();
string abc=“abcdefghijklmnopqrstuvxyz”;
WriteLine(“键入您想要加密的内容,只使用小写字母。”);
var s=Console.ReadLine();
如果(s==null)返回;
对于(变量i=0;i=s.Length)
{
x=x-s.长度;
}
var b=s.子串(x,1);
s=s。替换(a,b);
}
控制台。写入线(s);
Console.ReadKey();

您的循环条件错误。在for循环中使用change
==
这是学习使用调试器的好时机。您可以逐行遍历程序,这样您就可以看到循环只执行一次。它可以帮助洛蒂加密用户的输入,使每个字母在字母表中上升三位。例如abc=def,yes=bhv,等等。我尝试了你的代码,它返回了同样的结果。另外,我不太理解“StringComparison.Ordinal”,在“abc”变量的字符串中查找“a”的索引时,它使用搜索算法。“compare with Ordinal”表示它将与“abc”的每个字符的原始字节表示形式进行比较