1

我正在编写一个简单的算法,每次满足特定条件时都应该在控制台中写入。这是我的代码:

public static void StringTest()
{
    string stringToUse = "Ala BalaB JiBBerish Ala Jibberish Ala BalaB";

    int strLength = stringToUse.Length;
    int i = 0;
    while(i < strLength-4)
    {
        if (stringToUse[i] == stringToUse[(i + 4)] && stringToUse[(i + 1)] == stringToUse[(i + 3)])
            System.Console.WriteLine(stringToUse[i] + stringToUse[(i + 1)] + stringToUse[(i + 2)] + stringToUse[(i + 3)] + stringToUse[(i + 4)]);

        i++;
    }
}

但输出是数字字符串而不是文字字符串434。如果有人可以解释我为什么我没有收到错误和那些数字,我应该如何格式化输出以获得实际的字母?

4

6 回答 6

6

您将字符加在一起 ​​- 这将为您提供一个整数值。看起来您可能应该只使用 Substring:

Console.WriteLine(stringToUse.Substring(i, 5));

或者,您可以格式化字符:

Console.WriteLine("{0}{1}{2}{3}{4}",
                  stringToUse[i],
                  stringToUse[i + 1],
                  stringToUse[i + 2],
                  stringToUse[i + 3],
                  stringToUse[i + 4]);

(顺便说一句,请注意删除多余的括号。有时额外的括号很有用 - 在这里它们只是分散注意力。)

于 2012-08-08T17:01:27.563 回答
1
Console.WriteLine(stringToUse.substring(i, 5));
于 2012-08-08T17:02:33.543 回答
1

您可以使用stringctor,因为[]您获得的是 achar不是a string

if (stringToUse[i] == stringToUse[(i + 4)] && stringToUse[(i + 1)] == stringToUse[(i + 3)])
{
     //Construct string from the sequence of chars you want...
     string result = new string(new char[]{stringToUse[i],
                                     stringToUse[(i + 1)], 
                                         stringToUse[(i + 2)],
                                            stringToUse[(i + 3)], 
                                               stringToUse[(i + 4)]});
     System.Console.WriteLine(result);
}
于 2012-08-08T17:03:04.293 回答
1

更改您的代码以匹配此:

public static void StringTest()
{
    string stringToUse = "Ala BalaB JiBBerish Ala Jibberish Ala BalaB";

    for (int i = 0; i < stringToUse.Length - 4; ++i)
    {
        if (stringToUse[i] == stringToUse[(i + 4)] &&
            stringToUse[(i + 1)] == stringToUse[(i + 3)])
        {
            Console.WriteLine(string.Join(string.Empty,
                stringToUse[i],
                stringToUse[i + 1],
                stringToUse[i + 2],
                stringToUse[i + 3],
                stringToUse[i + 4]));
        }
    }
}

您应该使用for循环而不是while带有递增变量的循环。

于 2012-08-08T17:08:19.583 回答
0

stringToUse[i]是类型char。您正在添加char值,因此是数字。你想stringToUse.Substring(i, 5)改用。

于 2012-08-08T17:02:33.517 回答
0
System.Console.WriteLine(new[] {stringToUse[i], stringToUse[(i + 1)],stringToUse[(i + 2)],stringToUse[(i + 3)],stringToUse[(i + 4)]});
于 2012-08-08T17:03:46.867 回答