0

有人可以看看我的代码吗?我需要计算输入文本框中的字符并将它们显示在正确的标签框中。(辅音,元音,数字和其他)我确实让数字工作了,但他们在元音上搞砸了。

// 确定文本是辅音、元音、数字还是其他字符。然后它显示每个的计数。

int consCount = 0;
int vowelCount = 0;
int digitCount = 0;
int otherCount = 0;

string inputString;   
inputString = this.entryTextBox.Text.ToLower();


char[] vowels = new char[] {'a', 'e', 'i', 'o', 'u'};
string vow = new string(vowels);

for (int index = 0; index < inputString.Length; index++)
{

    if (char.IsLetterOrDigit(inputString[index]))
    {
        if (inputString.Contains(vow))
                vowelCount++;
    }

    else if (char.IsDigit(inputString[index]))
       digitCount++;

}
this.voweldisplayLabel.Text = vowelCount.ToString();
this.digitsdisplayLabel.Text = digitCount.ToString();
this.constdisplayLabel.Text = consCount.ToString();
this.otherdisplayLabel.Text = otherCount.ToString();
4

3 回答 3

1

您发布的代码中有两个问题:

  1. else线条的位置应与for而不是一致if

  2. String.Contains正在尝试匹配整个字符集...它不会将其分开并单独查找每个字符(仅true当字符串包含aeiou为块时才会出现)。如果您愿意,您可以使用 Linq 作为单线来完成此任务。否则,在列表中嵌套一个foreach和循环char以找到您的匹配项。

于 2013-09-14T23:51:08.700 回答
0

我想到了。我得到了正确显示的元音和数字。=) 现在我要去研究辅音和其他字符了。

        int vowelCount = 0;
        int digitCount = 0;

        string inputString;
        inputString = this.entryTextBox.Text.ToLower();

        char[] vowels = new char[] { 'a', 'e', 'i', 'o', 'u' };
        string vow = new string(vowels);

        for (int index = 0; index < inputString.Length; index++)
        {

            if (char.IsLetterOrDigit(inputString[index]))
            {
                if (vow.Contains(inputString[index]))
                {
                    vowelCount++;
                }

            else if (char.IsDigit(inputString[index]))
                digitCount++;

            }

        }
        this.voweldisplayLabel.Text = vowelCount.ToString();
        this.digitsdisplayLabel.Text = digitCount.ToString();
于 2013-09-15T01:51:24.127 回答
0

我认为你搞砸了 else 语句。它应该直接在 if 语句的右括号之后。但这里它位于 for 循环的右括号后面。也许你需要睡一会儿;)

于 2013-09-14T23:22:48.303 回答