c# – 命令一个字符数组,使所有元音都出现在最后

c# – 命令一个字符数组,使所有元音都出现在最后,第1张

概述我正在尝试编写一个程序,其中一个单词作为字符串被提供作为输入,我必须重新排列单词,以便它只是通过移动改变单词中字母的顺序 所有的元音到最后,保持它们与原始单词中出现的顺序相同 namespace ConsoleApplication1{ class Program { static void Main(string[] args) { 我正在尝试编写一个程序,其中一个单词作为字符串被提供作为输入,我必须重新排列单词,以便它只是通过移动改变单词中字母的顺序
所有的元音到最后,保持它们与原始单词中出现的顺序相同

namespace ConsoleApplication1{    class Program    {        static voID Main(string[] args)        {            string word = "application";            char[] letters = word.tochararray();            char x = new char { };            for (int j = 0; j < letters.Length; j++)            {                if ((letters[j] == 'a') | (letters[j] == 'e' ) | (letters[j] == 'i' ) | (letters[j] == 'o' ) | (letters[j] == 'u'))                {                    for (int i = 0; i < letters.Length - 1; i++)                    {                        x = letters[i];                        letters[i] = letters[i + 1];                        letters[i + 1] = x;                    }                }            }            string s = new string(letters);            Console.Writeline(s);        }    }}

该计划的输出是

ationaplic

但是程序的预期输出是

pplctnaiaio

为什么我的代码没有产生我想要的输出?

编辑的工作代码是

namespace VowelSort{    class Program    {        static voID Main(string[] args)        {            string word = "application";            char[] letters = word.tochararray();            char x = new char { };            int count = 0;            for (int j = 0; j < letters.Length - count; j++)            {                if ((letters[j] == 'a') | (letters[j] == 'e') | (letters[j] == 'i') | (letters[j] == 'o') | (letters[j] == 'u') | (letters[j] == 'A') | (letters[j] == 'E') | (letters[j] == 'I') | (letters[j] == 'O') | (letters[j] == 'U'))                {                    for (int i = j; i < letters.Length - 1; i++)                    {                        x = letters[i];                        letters[i] = letters[i + 1];                        letters[i + 1] = x;                    }                    count++;                    j--;                }            }            string s = new string(letters);            Console.Writeline(s);            Console.Writeline(count);        }    }}
解决方法 我在这里发现了三个问题:

>当您找到元音时,您将内部循环设置为0,因此您始终将第一个字符移动到结尾.从j开始吧.
>移动元音后,在下一个字母处开始外循环 – 所以如果连续有两个元音,则跳过第二个元音(因为它已移到“当前”位置后面). ‘移动元音,减少j.
>你将你的外环直接运行到最后,但是当你到达已经移动过的元音时你应该停止它.保持你移动的元音数量的计数,并在你从最后得到那么多的字符时停止你的外循环.

尝试自己实现这些更改,但如果你遇到困难,我可以给你一些指示.

一旦你有了这个工作,你可能想要通过意识到你不必执行多个成对交换来加速你的内循环 – 你可以只注意你找到的元音,在一个字符之后移动所有内容,然后插入最后的元音.

总结

以上是内存溢出为你收集整理的c# – 命令一个字符数组,使所有元音都出现在最后全部内容,希望文章能够帮你解决c# – 命令一个字符数组,使所有元音都出现在最后所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1222386.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存