2016-11-13 90 views
0

试图编写一个使字符串变为altcase的代码(即。“hello”变为“HeLlO”。我从此论坛的另一个问题借用了代码,要求类似的东西(Java Case Switcher)。 ,代码只交换信件的外壳而不是一个大写字母(第一),那么小写字母等图案的试图将字符串更改为altcase

我有什么至今:

public String altCase(String text) 
{ 
     String str = ""; 
     for (int i = 0; i <= text.length(); i++) 
     { 
     char cA = text.charAt(i); 

     if (text.charAt(0).isUppercase) 
     { 
      str += Character.toLowerCase(cA); 
     } 

     if (text.charAt(0).isLowercase) 
     { 
      str += Character.toUpperCase; 
     } 

     if(i != 0 && Character.isUpperCase(cA)) 
     { 
      if (text.charAt(i)-1.isUpperCase || text.charAt(i)+1.isUpperCase) 
      { 
       str += Character.toLowerCase(cA); 
      } 

      else 
      { 
       str += cA; 
      } 
     } 

    if(i != 0 && Character.isLowerCase(cA)) 
     { 
      if (text.charAt(i)-1.isLowerCase || text.charAt(i)+1.isLowerCase) 
      { 
      str += Character.toUpperCase(cA); 
      } 

      else 
      { 
       str += cA; 
      } 
     } 
    } 
     return str; 
} 

我还是比较一般来说编程新手,所以请原谅我的低效率,以及由于缺乏编码经验而导致的任何头痛问题。除了可能当我输入“text.charAt(i)-1.isLowerCase”,因为这个陈述看起来有点不合逻辑,但是我失去了尝试去完成相同的其他事情事情。或者是我的错误完全在别处?感谢您提前提供任何帮助。

+0

仔细看看你的圆括号。 – SLaks

+0

我错过了括号,添加了一个,还是误用了它们?似乎无法找到前两个。 –

+0

你认为'text.charAt(i)-1'是什么意思?你从什么减去? – SLaks

回答

1

如果我真正了解你想那是什么:

获取一个字符串,改变它在ABCDEFG的格式....等等。

还有更简单的解决方案。 获取一个字符串和for循环,对于每个字符,根据字符串中的位置更改字符大小,对于i%2 == 0大写和i%2 == 1小写。

public String altCase(String text) 
{ 
    String str = ""; 
    for (int i = 0; i < text.length(); i++) 
    { 
     char cA = text.charAt(i); 

     if (i%2 == 0) 
     { 
      str += Character.toUpperCase(cA); 
     } 
     else 
     { 
      str += Character.toLowerCase(cA); 
     } 
    } 
    return str; 
} 
1

modulus operator可能需要你在这里很长的路要走......

StringBuilder rslt = new StringBuilder(); 
for (int i = 0; i < text.length(); i++) { 
    char c = text.charAt(i); 
    switch (i % 2) { 
     case 0: 
      rslt.append(Character.toUpperCase(c)); 
      break; 
     case 1: 
      rslt.append(Character.toLowerCase(c)); 
      break; 
    } 
} 
return rslt.toString(); 
0

我将与StringBuilder(一可变字符序列)开始的text.toLowerCase();然后在偶数索引处将字符设置为它们的等值(并且您的方法似乎不依赖于实例状态,因此它可能是static)。类似的,

public static String altCase(String text) { 
    StringBuilder sb = new StringBuilder(text.toLowerCase()); 
    for (int i = 0; i < text.length(); i += 2) { 
     sb.setCharAt(i, Character.toUpperCase(sb.charAt(i))); 
    } 
    return sb.toString(); 
}