c# – 命令一个字符数组,使所有元音都出现在最后
发布时间:2020-12-16 00:06:32 所属栏目:百科 来源:网络整理
导读:我正在尝试编写一个程序,其中一个单词作为字符串被提供作为输入,我必须重新排列单词,以便它只是通过移动改变单词中字母的顺序 所有的元音到最后,保持它们与原始单词中出现的顺序相同 namespace ConsoleApplication1{ class Program { static void Main(strin
我正在尝试编写一个程序,其中一个单词作为字符串被提供作为输入,我必须重新排列单词,以便它只是通过移动改变单词中字母的顺序
所有的元音到最后,保持它们与原始单词中出现的顺序相同 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开始吧. 尝试自己实现这些更改,但如果你遇到困难,我可以给你一些指示. 一旦你有了这个工作,你可能想要通过意识到你不必执行多个成对交换来加速你的内循环 – 你可以只注意你找到的元音,在一个字符之后移动所有内容,然后插入最后的元音. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |