if条件句中关于else if的问题

Papaver 2011-09-06 05:17:29

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]);
}
}
}
...全文
117 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
低头思蚊香 2011-09-06
  • 打赏
  • 举报
回复
因为你的if语句的条件是根据字母的大小写来判断是否执行if内的语句,而在if内的语句的执行中会改变原来字母的大小写,也就是说字母的大小写在第一次if中已经改变,而你还是以原来的字母的大小写来判断结果,所以出错,如果在两个if内没有改变自身的判断条件的语句的话,else是可以省略的。
  • 打赏
  • 举报
回复
第二种情况下,第一个if就没用了,被第二个覆盖。。。
beannian 2011-09-06
  • 打赏
  • 举报
回复
对的啊,如果把else if改为if的话,对于大写字母只执行第二个if语句变成小写,对于小写字母,两个if语句都会执行,经过第一个if后a[i]变成大写字母,但是由于i没有变,所以第二个if语句的判定条件也生效,所以又被转成小写。
风火轮 2011-09-06
  • 打赏
  • 举报
回复
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不会执行进去的
Papaver 2011-09-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qq806418714 的回复:]
第一种情况,经过第一个if小写变大写,再第二个if大写变小写
第二种情况,经过第一个if大写还是大写,再第二个if大写变小写
[/Quote]
明白了,谢谢。
低头思蚊香 2011-09-06
  • 打赏
  • 举报
回复
第一种情况,经过第一个if小写变大写,再第二个if大写变小写
第二种情况,经过第一个if大写还是大写,再第二个if大写变小写

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧