我参加了一个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;
}
答案 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;
}