我正在尝试新的命令,比如Indexof(),并且遇到了问题

时间:2017-05-22 00:47:42

标签: c# string

嘿,我是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();
        }
    }
}

2 个答案:

答案 0 :(得分:0)

纠正您的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();

答案 1 :(得分:-1)

您的循环条件错误。使用&lt; =或!=。