//为什么它转换为小写而不是大写
public class LowerUpperCase {
public static void main(String[] args) {
String s="lowerUppercase";
for (int i = 0; i < s.length()-1; i++) {
if(s.charAt(i) >='a' && s.charAt(i)<='z'){ //OR IF DONE THIS NOT WORKING
if((s.charAt(i) >='a' && s.charAt(i)<='z' ) || (s.charAt(i) >='A' && s.charAt(i)<='Z')){
s=s.toLowerCase();//here should i go for
}
else if(s.charAt(i) >='A' && s.charAt(i)<='Z'){
s=s.toUpperCase();
}
}
System.out.println(s);
}
}
//我总是得到像小写或小写这样的输出
INPUT:LowerUpperCase
OUTPUT:lOWERuPPERcASE expected
HERE WHY IS IT CONVERTING TO LOWER CASE BUT NOT TO UPPER CASE
I ALWAYS GET OUTPUT LIKE loweruppercase or LOWERUPPERCASE
3条答案
按热度按时间wj8zmpe11#
你的代码看起来是正确的,但是你需要在小写和大写之间切换。试试这个版本:
注意,上面的例子假设输入字符串中只有小写和大写的英语字母,如果不是这样,那么答案可能要改变。
vhmi4jdf2#
现在你知道为什么了。下面是另一种方法:
这将输出到控制台窗口:
xpszyzbs3#
因为您是在整个字串上呼叫方法,而您只想切换位置i之字符的大小写。如果最后一个字母是小写,则程式码范例会将整个字串设定为小写,而在其他情况下则设定为大写。
另外,Java中的String是一个不可变的对象,这意味着一旦创建了它,就不能更改它的值,因此需要一个stringBuilder。
如果你想玩函数式编程,这里有一个函数式版本(它不实用,纯粹是教育性的):