C#凯撒的密码

时间:2018-01-20 22:12:03

标签: c#

我参加了一个c#课程而且我很困惑为什么这不起作用。 以下是说明:

  

创建一个名为encodedString的字符串变量,并将其设置为等于StringTextBox的内容。

     

创建一个名为encodedString的字符串变量来保存编码的字符串并将其设置为等于空字符串。我们将在这个变量中逐个字母地建立编码值。

     

使用for()循环遍历decodeString中的所有字符。你的循环索引" i"应该从0开始并递增到decodeString中的最后一个字符。

     

循环内部:   创建一个名为thisChar的char变量,并将其设置为当前字符decodeString [i]。

     

创建一个名为encodedValue的整数变量,并将其设置为等于存储在thisChar中的字符的ASCII数值。为此,您可以简单地将角色转换为int,如下所示:   int encodedValue =(int)thisChar;

     

使用字符串格式语句(String.Format()或ToString())将encodedValue整数转换为3位数的文本字符串,并在需要时使用前导零。将结果字符串附加到encodedString变量的末尾。   还附加一个逗号","在每组3位数之后到encodedString的末尾。   循环完成后,您的encodedString应保存完全编码的结果。通过将StringTextBox.Text设置为等于encodedString来向用户显示结果。

我的代码

private void EnocodeButton_Click(object sender, EventArgs e)
    {

        String decodeString = StringTextBox.Text;
        String encodeString = "";
        for (int i = 0; i < decodeString.Length; i++)
        {

            Char thisChar = decodeString{i};
            int encodedValue = (int)thisChar;
            encodeString = encodedValue.ToString("D3");
            StringTextBox.Text = encodeString;

        }    

2 个答案:

答案 0 :(得分:0)

decodeString{i}更改为decodeString[i]

您还需要使用

附加结果
encodeString = $"{encodeString}{encodedValue.ToString("D3")},";

这称为字符串插值,它是String.Format的更易读的版本。 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/interpolated-strings

为了更完全符合您提供的规范(并且不使用字符串插值),编码字符串行可以是:

encodeString = encodeString + encodedValue.ToString("D3") + “,”;

答案 1 :(得分:0)

每次迭代后,您将替换StringTextBox.Text的值。另外,你没有附加逗号。您可以在列表中收集编码值,然后在循环结束后更新文本框的文本字段:

private void EnocodeButton_Click(object sender, EventArgs e)
{

    String decodeString = StringTextBox.Text;
    String encodedString = "";
    for (int i = 0; i < decodeString.Length; i++)
    {

        Char thisChar = decodeString[i];
        int encodedValue = (int)thisChar;
        encodedString += encodedValue.ToString("D3") + ",";
    }

    StringTextBox.Text = encodedString;
}