首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java案例开关

Java案例开关
EN

Stack Overflow用户
提问于 2015-12-01 20:37:45
回答 4查看 664关注 0票数 1

因此,我正在编写一个小的返回程序,它可以切换字符串中字符的大小写,因此HELLo变成了HeLlO,hElLo变成了hello,而AaA变成了aaa。不过我有点麻烦。我还是个新手,还在学习java,如果这违反了规则,我很抱歉:

代码语言:javascript
运行
复制
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;
 }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-12-01 22:50:24

所以我设法做到了。

代码语言:javascript
运行
复制
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”方法来跟踪迭代,并根据最后一个字符的条件在上下大小写之间添加了“开关”方法。(当字符串中的最后一个字符为大写时,lastUp为真)。

票数 0
EN

Stack Overflow用户

发布于 2015-12-01 20:46:39

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

代码语言:javascript
运行
复制
      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;
 }
票数 1
EN

Stack Overflow用户

发布于 2015-12-01 20:43:04

我将使用StringBuilder来构建返回值,您也可以使用String.toCharArray() loop。最后,您可以测试一个字符是否是小写(或大写),然后交换大小写。就像,

代码语言:javascript
运行
复制
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();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34029652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档