黑马程序员技术交流社区

标题: 一个常识一下午我才弄明白,小细节大问题。 [打印本页]

作者: fantianfei    时间: 2015-7-20 18:21
标题: 一个常识一下午我才弄明白,小细节大问题。
关于if else后面加不加大括号的区别,加括号会执行里面的全部语句,不加只执行第一条语句,受教了。比对了一下午才弄明白问题所在。
  1. import java.util.*;
  2. class MapTest3
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 String s = charCount("abaassbswwbweeberrbrtbtt");
  7.                 System.out.println(s);
  8.         }
  9.         public static String charCount(String str)
  10.         {
  11.                 char[] chs = str.toCharArray();

  12.                 TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();

  13.                 for (int x= 0; x<chs.length; x++)
  14.                 {
  15.                         Integer value = tm.get(chs[x]);
  16.                        
  17.                         if(value == null)
  18.                         {
  19.                                 tm.put(chs[x],1);
  20.                         }
  21.                         else
  22. //跟着老毕的视频试着自己敲代码,else这里没加大括号一直显示字母出现次数是null,原来是else没加大括号,只执行了第一句。
  23.                         {
  24.                                 value = value+1;
  25.                                 tm.put(chs[x],value);
  26.                         }
  27.                 }
  28.                 StringBuilder sb = new StringBuilder();

  29.                 Set<Map.Entry<Character,Integer>> entrySet = tm.entrySet();
  30.                 Iterator<Map.Entry<Character,Integer>> it = entrySet.iterator();
  31.                 while (it.hasNext())
  32.                 {
  33.                         Map.Entry<Character,Integer> me = it.next();
  34.                         Character ch = me.getKey();
  35.                         Integer v = me.getValue();
  36.                         sb.append(ch+"("+v+")");
  37.                 }

  38.                 return sb.toString();
  39.         }
  40. }
复制代码

作者: fantianfei    时间: 2015-7-20 18:29
附带一道题:
  1. class MapTest3
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int score = 90;
  6.                 if (score>80)
  7.                 {
  8.                         System.out.println("成绩不错。");
  9.                 }
  10.                 else
  11.                         System.out.println("成绩不理想。");
  12.                         System.out.println("要加油呀。");
  13.         }
  14. }
复制代码


A:成绩不错。
B:成绩不理想。
C:成绩不错。要加油呀。
D:成绩不理想。要加油呀。
作者: 木森    时间: 2015-7-20 18:45
你不是吧
作者: fantianfei    时间: 2015-7-20 18:51
木森 发表于 2015-7-20 18:45
你不是吧

哎,忘记这个知识点了啊,发现有时候看了后面忘了前面。
作者: 小灬清新丶    时间: 2015-7-20 19:07
学习了~~~
作者: 炎舞霜冬    时间: 2015-7-20 21:22
看过了啊
作者: 小p    时间: 2015-7-20 21:55
可以的。。
作者: lsunshine    时间: 2015-7-20 22:29
;P  加油
作者: fantianfei    时间: 2015-7-21 09:16
lsunshine 发表于 2015-7-20 22:29
加油

谢谢。。。
作者: 以梦为码    时间: 2015-7-21 13:29
加油,我也一样老是忘记,
作者: 王文辉    时间: 2015-7-21 14:30
这个一般还是加上吧,增加可读性
作者: fantianfei    时间: 2015-7-22 07:54
王文辉 发表于 2015-7-21 14:30
这个一般还是加上吧,增加可读性

是呢。我也觉得。
作者: 代晃    时间: 2015-7-22 08:18
我也是容易忘记呀。。
作者: 王勋亮    时间: 2015-7-22 08:27
这个应该是成绩不错。如果把分数改成60,应该就是成绩不理想,加上{}应该就是成绩不理想,继续努力吧

不知道对不对,楼主指正啊
作者: 张凝宁    时间: 2015-7-22 09:31
的却如此
作者: 未央1216    时间: 2015-7-22 10:04
是成绩不错。要加油呀。
作者: fantianfei    时间: 2015-7-22 14:18
王勋亮 发表于 2015-7-22 08:27
这个应该是成绩不错。如果把分数改成60,应该就是成绩不理想,加上{}应该就是成绩不理想,继续努力吧

不 ...

这个答案是c,因为没加括号,else只控制成绩不理想,不管多少分数,要加油都是会输出的。
作者: 王勋亮    时间: 2015-7-22 16:14
fantianfei 发表于 2015-7-22 14:18
这个答案是c,因为没加括号,else只控制成绩不理想,不管多少分数,要加油都是会输出的。 ...

哦哦哦   受教了!谢谢!
作者: chasingw    时间: 2015-7-22 18:37
这个。。。
作者: fantianfei    时间: 2015-7-24 00:04
chasingw 发表于 2015-7-22 18:37
这个。。。

:)这个怎么了
作者: wanghua1    时间: 2015-7-24 00:06
感觉有学习的地方




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2