当我调试这个控制台应用程序时,它给出了一个奇怪的结果。显然我忽略了一些东西。
class Program
{
static void Main(string[] args)
{
int ops = int.Parse(Console.ReadLine());
int inte = 0;
StringBuilder roll = new StringBuilder();
Operations(roll, inte, ops);
}
static void Operations(StringBuilder roll, int inte, int ops)
{
for (int i = 0; i < ops; i++)
{
roll.AppendLine(Console.ReadLine());
inte = roll.ToString().IndexOf("^");
if (inte == i)
roll.Remove(i, 1);
if (roll.ToString().IndexOf("!") == i)
roll.Remove(i, 1);
}
Console.WriteLine(roll.ToString());
Console.ReadLine();
}
}
对于输入,为第一个输入(整数“inte”)输入“3”,为其他 3 个 ReadLine 条目输入“^A”、“^B”、“^D”。在循环的第一次迭代中,它将按预期删除 ^。但是在第二次迭代(i =1)中,它读取 inte 为 3。但它应该是 1,因为在第二轮中,Stringbuilder 已将“^B”附加到 A,所以它现在是“A^B”。当输入字符串生成器正在附加字符串时,我正在尝试删除“^”(和“!”)。为什么“inte”整数在第二轮读取为 3?