Java 大小写切换器

Java Case Switcher

所以我正在编写一个 return 小程序来切换字符串中字符的大小写,因此 HELLo 变为 hElLo,hello 变为 HeLlO,aaa 变为 AaA。不过我有点麻烦。我还是新人,正在学习 java,如果这违反了规则,我深表歉意:

public static String altCase(String text){
      String str = "";
      for (int i = 0; i <= text.length()-1; i++)
      {
        char ch = text.charAt(i);
        boolean lastIsUpperCase = true;
        if(Character.isUpperCase(i-1))
        {
          lastIsUpperCase = true;
        }
        else if(Character.isLowerCase(i-1))
        {
          lastIsUpperCase = false;
        }

        if(lastIsUpperCase)
        {
          str += Character.toLowerCase(ch);
        }   
        else if (!lastIsUpperCase)
        {
          str += Character.toUpperCase(ch);
        }
      }
      return str;
 }

我会使用 StringBuilder to build up the return value, and you could also use a String.toCharArray() and a for-each loop。最后,您可以测试字符是否为小写(或大写)然后交换大小写。像,

public static String altCase(String text) {
    if (text == null || text.isEmpty()) {
        return text;
    }
    StringBuilder sb = new StringBuilder(text.length());
    for (char ch : text.toCharArray()) {
        if (Character.isUpperCase(ch)) {
            sb.append(Character.toLowerCase(ch));
        } else if (Character.isLowerCase(ch)) {
            sb.append(Character.toUpperCase(ch));
        } else {
            sb.append(ch);
        }
    }
    return sb.toString();
}

您应该将 char 添加到您的 if 子句中,如下所示:

      String str = "";
      for (int i = 0; i <= text.length()-1; i++)
      {
        char ch = text.charAt(i);

        if(Character.isUpperCase(ch))
        {
          str += Character.toLowerCase(ch);
        }
        else if(Character.isLowerCase(ch))
        {
            str += Character.toUpperCase(ch);
        }


      }
      return str;
 }

您可以制作一个字符数组,然后分别检查和交换每个元素。完成后,只需将该 char 数组作为参数传递给字符串,使其成为字符串

char[] word = new char[3];
String str = new String(word); 

所以我成功了。

public static String altCase(String text){
      String str = "";
      str += Character.toUpperCase(text.charAt(0));
      for (int i = 1; i <= text.length()-1; i++)
      {
        char ch = text.charAt(i);
        boolean lastUp = flipFlop(i);
        char temp = switcher(ch, lastUp);
        str+=temp;
      }
      return str;
 }
 public static boolean flipFlop (int i){
      boolean bool = true;
      if(i==1){
        bool = true;
      }
      else if((i%2)==0)
      {
           bool = false;
      }
      else if((i%2)!=0)
      {
           bool = true;
      }
      return bool;
 }
 public static char switcher (char ch, boolean lastUp){
   char temp = ch;
   if(lastUp){
        temp = Character.toLowerCase(ch);
   }
   else if (lastUp==false){
     temp = Character.toUpperCase(ch);
   }
   return temp;
 }

我添加了一个'flipFlop'方法来跟踪迭代,方法'switcher'根据最后一个字符的情况在大小写之间变化。 (当字符串中的最后一个字符为大写时,lastUp 为真)。