Ubbi Dubbi 是一个在单词的第一个元音之前插入字母“ub”的程序。在我的代码中,它不会在第一个元音之前执行它,而是在第二个元音之前执行。如果我输入“hello”,输出是“hellobo”,而它应该是“hubello”。对不起,如果我的英语不好,我还在学习。
Console.Write("Enter word: ");
string word = Console.ReadLine();
var loc = word.IndexOfAny(new char[] {'a', 'e', 'i', 'o', 'u'});
int aloc = word.IndexOf('a');
int eloc = word.IndexOf('e');
int iloc = word.IndexOf('i');
int oloc = word.IndexOf('o');
int uloc = word.IndexOf('u');
if (aloc!= -1 && aloc > loc)
{
loc = aloc;
}
if (eloc!= -1 && eloc > loc)
{
loc = eloc;
}
if (iloc!= -1 && iloc > loc)
{
loc = iloc;
}
if (oloc!= -1 && oloc > loc)
{
loc = oloc;
}
if (uloc!= -1 && uloc > loc)
{
loc = uloc;
}
string word1 = word.Insert(loc, "ub");
Console.WriteLine(word1);
在调用 IndexOfAny
之后,所有工作都已完成。所以你可以跳过大部分代码。但是你应该插入一个检查,如果有任何元音:
Console.Write("Enter word: ");
string word = Console.ReadLine();
var loc = word.IndexOfAny(new char[] { 'a', 'e', 'i', 'o', 'u' });
string word1 = loc >= 0 ? word.Insert(loc, "ub") : word;
Console.WriteLine(word1);
在您的代码中发现了一个“e”,因此执行了 loc = eloc
。但是也发现了 'o' 并且 loc = oloc
在 'e'-check 之后执行。所以 loc
的最终值是 oloc
之一。
我是一名优秀的程序员,十分优秀!