for循环中的Java特定字符

for循环中的Java特定字符,java,for-loop,Java,For Loop,我已经编写了一个代码来反转给定字符串中元音的顺序,但是我还需要保持元音大写在字符串中的原始位置。例如,input:Java是有趣的输出:Juvi作为Fan,而不是Juvi作为Fan 以下是我目前输出JuvI为Fan的代码: 如果字符串中的大写字母多于小写字母,我会记录所有大写字母或小写字母 List capitalLetters=new ArrayList;//大写字母的位置。 对于int i=0;il; 返回新的字符串字符; } /** *查找字符串中任何给定字符的下一个位置,从给定位置开始。

我已经编写了一个代码来反转给定字符串中元音的顺序,但是我还需要保持元音大写在字符串中的原始位置。例如,input:Java是有趣的输出:Juvi作为Fan,而不是Juvi作为Fan

以下是我目前输出JuvI为Fan的代码:


如果字符串中的大写字母多于小写字母,我会记录所有大写字母或小写字母

List capitalLetters=new ArrayList;//大写字母的位置。 对于int i=0;i c=Character.toLowerSec; 返回c='a'| c='e'| c='i'| c='o'| c='u'; 为了避免检查大写字母,我会从左到右搜索字符串,寻找下一个元音字符,然后交换两个元音字符,同时保留原来的大小写。这有点冗长,但我喜欢构建更通用的解决方案,以便可用于不同的场景

也许对你有价值

公共类反向世界{ 私有静态最终字符[]元音=新字符[]{'a','e','i','o','u','a','e','i','o','u'}; 公共静态无效字符串[]args{ 最终字符串输入=Java很有趣; 预期最终字符串=作为风扇的Juvi; 最终字符串实际值=ReverseWelsInput; 如果是实际的,则为预期的{ System.out.println太棒了!成功了!; } } /** *反转给定字符串中的元音。保留原始字符的大小写。 * *@param s用于反转中元音的字符串 *@返回被操纵的字符串 */ 私有静态字符串ReverseWellsString s{ char[]chars=s.toCharArray; int l=-1; int r=字符长度; 做{ l=索引,元音,l+1; r=最新索引,元音,r-1; 如果l-1{ char charLeft=chars[l]; char charRight=chars[r]; chars[l]=Character.isUpperCaseCharlLeft?Character.ToUpperCaseCharlRight:Character.toLowerCasecharRight; chars[r]=Character.isUpperCaseCharlRight?Character.ToUpperCaseCharlLeft:Character.ToLowerCaseCharlLeft; } }而l>-1&&r>-1&&r>l; 返回新的字符串字符; } /** *查找字符串中任何给定字符的下一个位置,从给定位置开始。 * *@param是要搜索的字符串 *@param chars要查找的字符 *@param startPos起始位置 *@返回下一个字符的索引,如果找不到字符,则返回-1 */ 公共静态int indexOfAnyString s,char[]chars,int startPos{ startPos=Math.max0,startPos; 对于int i=startPos;i=0;i-{ char c=s.charAti; 如果包含rchars,c{ 返回i; } } 返回-1; } /** *如果char数组chars包含给定的char c,则返回true。 * *@param chars要搜索的字符数组 *@param c要搜索的字符 *@如果找到则返回true,否则返回false */ 公共静态布尔containsCharchar[]字符,字符c{ 对于char c2:chars{ 如果c==c2{ 返回true; } } 返回false; } }
您好,如果一个人声是单词的第一个字母,您只想将其大写?然后您需要跟踪哪个音节是否大写。否,它需要保持任何元音的大写,因此如果使用JAva is Fun输入,则输出将是JUvi,因为没有返回语句。我添加了return str,但它无法将char[]转换为java.lang.Stringstatic boolean Is元音字符c{return
c='a'| c='a'| c='e'| c='e'| c='i'| c='i'| c='o'| c='o'| c='u'| c='u'| c='u';我回答的最后一部分是替换这个函数的主体,没有必要,只是更干净。是的,我指的是第一个代码主体。没有返回语句。我已经编辑过,此代码应该放在main中,它调用reversevowels,然后整理出大写@Beanieleung抱歉没有澄清,它需要在代码体中返回,而不是通过main
static boolean isVowel(char c)
  {
      return (c == 'a' || c == 'A' || c == 'e'
                || c == 'E' || c == 'i' || c == 'I'
                || c == 'o' || c == 'O' || c == 'u'
                || c == 'U');
public static String reverseVowels(String text)
  {
      int index = 0;
      char[] str = text.toCharArray();
      String vowel = "";
      for (int i = 0; i < str.length; i++)
      {
          if (isVowel(str[i]))
          {
              index++;
              vowel += str[i];
          }
      } 
      for (int i = 0; i < str.length; i++)
      {
          if (isVowel(str[i]))
          {
              str[i] = vowel.charAt(--index);
          }
      }
      return String.valueOf(str);