public class BianZiMu {
public static void main(String[] args) {
char a[]={'a','b','c','D','E','F'};
for(int i=0;i<=5;i++){
if(Character.isLowerCase(a[i])){
a[i]=Character.toUpperCase(a[i]);
}
else if(Character.isUpperCase(a[i])){  //注意这里如果写作是if没有else的情况下,输出的就全是小写。怎么回事??
a[i]=Character.toLowerCase(a[i]);
}
}
for(int i=0;i<=5;i++){
System.out.println(a[i]);
}
}
}

解决方案 »

  1.   

    第一种情况,经过第一个if小写变大写,再第二个if大写变小写
    第二种情况,经过第一个if大写还是大写,再第二个if大写变小写
      

  2.   

    if(Character.isLowerCase(a[i])){
                    a[i]=Character.toUpperCase(a[i]);
                }
                 if(Character.isUpperCase(a[i])){  
                    a[i]=Character.toLowerCase(a[i]);
                }
    前面if把小写变大写 第二个把大写变小写 不是都变回来了
    if else if 是前面if满足 后面else if不会执行进去的
      

  3.   

    对的啊,如果把else if改为if的话,对于大写字母只执行第二个if语句变成小写,对于小写字母,两个if语句都会执行,经过第一个if后a[i]变成大写字母,但是由于i没有变,所以第二个if语句的判定条件也生效,所以又被转成小写。
      

  4.   

    因为你的if语句的条件是根据字母的大小写来判断是否执行if内的语句,而在if内的语句的执行中会改变原来字母的大小写,也就是说字母的大小写在第一次if中已经改变,而你还是以原来的字母的大小写来判断结果,所以出错,如果在两个if内没有改变自身的判断条件的语句的话,else是可以省略的。