因此,我正在编写一个小的返回程序,它可以切换字符串中字符的大小写,因此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;
}发布于 2015-12-01 22:50:24
所以我设法做到了。
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为真)。
发布于 2015-12-01 20:46:39
您应该在if子句中添加char,如下所示:
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;
}发布于 2015-12-01 20:43:04
我将使用StringBuilder来构建返回值,您也可以使用String.toCharArray()和 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();
}https://stackoverflow.com/questions/34029652
复制相似问题