C# 凯撒';s密码

C# 凯撒';s密码,c#,C#,我正在上一门c#课程,我很困惑为什么这不管用。 以下是说明: 创建名为decodedString的字符串变量,并将其设置为等于StringTextBox的内容 创建一个名为encodedString的字符串变量来保存编码字符串,并将其设置为空字符串。我们将在此变量中逐字建立编码值 使用for()循环遍历decodedString中的所有字符。循环索引“i”应该从0开始,递增到decodedString中的最后一个字符 在循环内部: 创建一个名为thisChar的char变量,并将其设置为当前字符

我正在上一门c#课程,我很困惑为什么这不管用。 以下是说明:

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

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

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

在循环内部: 创建一个名为thisChar的char变量,并将其设置为当前字符decodedString[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;

        }    
private void EnocodeButton\单击(对象发送者,事件参数e)
{
String decodeString=StringTextBox.Text;
字符串编码字符串=”;
for(int i=0;i
解码字符串{i}
更改为
解码字符串[i]

您还需要将结果附加到

encodeString = $"{encodeString}{encodedValue.ToString("D3")},";
这叫做字符串插值,它是string.Format的一个更可读的版本

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

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

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

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;
}
private void EnocodeButton\单击(对象发送者,事件参数e)
{
String decodeString=StringTextBox.Text;
字符串encodedString=“”;
for(int i=0;i
@Erresen似乎解决了这个问题,但我一次只能编码3个字母。哇,这解决了我的两个问题,让你非常担心。但现在我对encodeString=$“{encodeString}{encodedValue.ToString(“D3”)}”语句的工作方式感到困惑。encodeString行使用字符串插值可能是被否决的(不是我)因为尽管字符串插值是C#v6的一项有用的新功能,但它并不适合所有情况。首先,当字符串插值的全部目的是以较少的键入格式化字符串时,不需要对
ToString
的冗余调用进行插值。接下来,可以使用+运算符完成简单的字符串串联,因此无需使操作复杂化。以下代码具有相同的结果:
encodeString+=$“{encodedValue:D3},
。更新了答案以包含不包含插值的选项