gpt4 book ai didi

c# - 使用开关计算元音

转载 作者:行者123 更新时间:2023-11-30 18:50:20 25 4
gpt4 key购买 nike

我试图设计一个计算句子中元音的程序。

在我的代码中,我使用了 foreach 语句和 if/else if 语句。我想使用 switch 语句转换这些代码行但我不确定该去哪里。我需要添加新方法吗?我将不胜感激你的帮助。

这是我到目前为止尝试过的:我检查过这个是非常错误的。例如,case 1 需要有一个常量。我不确定我应该在这里使用什么常量。

foreach (char v in yourSentence)
{
switch (v)
{
case 1:
(v==ch1);
counta++;
j++;
break;

case 2:
(v==ch2);
counte++;
j++;
break;
case 3:
(v==ch3);
counti++;
j++;
break;
case 4:
(v==ch4);
counto++;
j++;
break;
case 5:
(v==ch3);
counti++;
j++;
break;
}
}

另一个问题:我试图改变listBox中显示文本的颜色。有可能有不同的颜色吗?我在这里也尝试过的是前 5 个 (listBox1.Items.Add) 是紫色的。 (listBox1.Items.Add) 的总和是蓝色的。但似乎并没有改变。我在这里错过了什么吗?

private void btnCount_Click(object sender, EventArgs e)
{
string yourSentence;
yourSentence = textBoxVowels.Text.ToLower().Trim();

char ch1 = 'a';
char ch2 = 'e';
char ch3 = 'i';
char ch4 = 'o';
char ch5 = 'u';

int counta = 0;
int counte = 0;
int counti = 0;
int counto = 0;
int countu = 0;

int j = counta + counte + counti + counto + countu;



foreach (char v in yourSentence)
{
if (v == ch1) { counta++; j++; }

else if (v == ch2) { counte++; j++; }

else if (v == ch3) { counti++; j++; }

else if (v == ch4) { counto++; j++; }

else if (v == ch5) { countu++; j++; }
}

listBox1.Items.Add("There are " + counta.ToString().Trim() + " a's in the sentence");
listBox1.Items.Add("There are " + counte.ToString().Trim() + " e's in the sentence");
listBox1.Items.Add("There are " + counti.ToString().Trim() + " i's in the sentence");
listBox1.Items.Add("There are " + counto.ToString().Trim() + " o's in the sentence");
listBox1.Items.Add("There are " + countu.ToString().Trim() + " u's in the sentence");
listBox1.Font = new Font("Arial", 12, FontStyle.Bold);
listBox1.ForeColor = Color.Violet;

listBox1.Items.Add("There are " + j.ToString().Trim() + " vowels in the sentence");
listBox1.ForeColor = Color.Blue;
}


private void btnClear_Click(object sender, EventArgs e)
{
textBoxVowels.Text = null;
listBox1.Items.Clear();
}

最佳答案

或者通过使用一点 LINQ 来简化整个问题. :)

public static int CountVowels(this string value)
{
const string vowels = "aeiou";
return value.Count(chr => vowels.Contains(char.ToLower(chr)));
}

Count扩展方法特别适合这项任务。另外,请注意使用所有元音组成的字符串来检查每个字符 - 比 switch 语句简单得多。

注意:我似乎忽略了您想单独计算每个元音的事实。在这种情况下,LINQ 会变得有点复杂(至少如果您想高效地执行它的话),但我会将其作为练习留给您。无论如何,switch 语句可能是学习 C# 基础知识的好方法。


既然你可能对 switch 语句很好奇,下面的代码使用了正确的语法:

foreach (var chr in sentence)
{
switch (chr)
{
case 'a':
...
break;
case 'e':
...
break;
case 'i':
...
break;
case 'o':
...
case 'u':
...
break;
}
}

关于c# - 使用开关计算元音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1187799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com