您好我被要求做一个计算字符串中元音,辅音,大写和小写字母数量的任务。
我在编写字符串中的大写和小写字母时遇到了麻烦。 我可以成功计算元音和常数的数量,但大写和小写字母似乎很痛苦。
以下是代码:
public void Calculate()
{
foreach(string sentence in sentenceList)
{
sentences++;
for (int i = 0; i < sentence.Length; i++)
{
if (vowelsArray.Contains(sentence[i]))
{
vowels++;
}
else if (consonantsArray.Contains(sentence[i]))
{
consonants++;
}
else if (char.IsUpper(sentence[i]))
{
upperCaseLetters++;
}
else if (char.IsLower(sentence[i]))
{
lowerCaseLetters++;
}
}
}
}
大写和小写字母的值为0.(不应该)
有什么建议吗?谢谢!
答案 0 :(得分:5)
之前您不需要
else
else if (char.IsUpper(sentence[i]))
因为您有两个独立条件集:
答案 1 :(得分:2)
您有一系列if
/ else
语句,匹配的第一个条件(元音或辅音)将阻止任何未来条件匹配。将if
/ else
链分成2个链:
请参阅以下更新代码:
public void Calculate()
{
foreach(string sentence in sentenceList)
{
sentences++;
for (int i = 0; i < sentence.Length; i++)
{
if (vowelsArray.Contains(sentence[i]))
{
vowels++;
}
else if (consonantsArray.Contains(sentence[i]))
{
consonants++;
}
// the else was removed here!
if (char.IsUpper(sentence[i]))
{
upperCaseLetters++;
}
else if (char.IsLower(sentence[i]))
{
lowerCaseLetters++;
}
}
}
}
答案 2 :(得分:1)
你每次只能通过循环击中这些条件中的一个,所以如果你的前两个条件涵盖了所有可能性(这很可能,因为它涵盖了所有元音和所有辅音!)你从来没有到达你的第三和第四块。
答案 3 :(得分:0)
string text = "This is Sample";
int upcount = 0;
int lowcount = 0;
for (int i = 0; i < text.Length; i++)
{
if (char.IsUpper(text[i])) upcount++;
if (char.IsLower(text[i])) lowcount++;
}
Console.Write(upcount);
Console.Write(lowcount);
修改强>
在你的情况下,改变它,
if (char.IsUpper(sentence[i]))
{
upperCaseLetters++;
}
else (char.IsLower(sentence[i]))
{
lowerCaseLetters++;
}
答案 4 :(得分:0)
我使用dotnetfiddle
对此进行了测试但这是适用于我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
int upper = 0;
int lower = 0;
string upperLowerCase = "This Is A Test";
char[] splitString = upperLowerCase.ToCharArray();
for(int i = 0; i < splitString.Length; i++)
{
if(char.IsUpper(splitString[i]))
{
upper++;
}
else
{
lower++;
}
}
Console.WriteLine("Total Upper Case Letters: " + upper.ToString());
Console.WriteLine("Total Lower Case Letters: " +lower.ToString());
}
}
// Output
// Total Upper Case Letters: 4
// Total Lower Case Letters: 10
但在你的情况下,你需要分开条件语句。一个用于检查元音或辅音,另一个用于检查信件的情况。
所以这个:
else if (char.IsUpper(sentence[i]))
{
upperCaseLetters++;
}
else if (char.IsLower(sentence[i]))
{
lowerCaseLetters++;
}
需要改为:
if (char.IsUpper(sentence[i]))
{
upperCaseLetters++;
}
else
{
lowerCaseLetters++;
}
我希望这有帮助!
答案 5 :(得分:0)
基于Sajeetharan的答案稍微快一点
string text = "This is Sample";
int upcount = 0;
int lowcount = 0;
for (int i = 0; i < text.Length; i++)
{
if (text[i]>64 && text[i]<91) upcount++;
else if (text[i]>96 && text[i]<123) lowcount++;
}
Console.Write(upcount);
Console.Write(lowcount);