体会了一回脑力活动

        今天把黑马的入学试题给做完了,不算很难,因为在看黑马的视频时,从视频里学到了很多方法,这也是张孝详老师视频的一个特点,他在视频里演示代码时经常会出现一些问题,有很多也是故意出现的,他总是这样做,所以他教会了我许多的访问,而不仅仅是知识。

        因为练习的少,虽然题目不是很难,但是就是因为练习的少,我得很用脑子去思考,这种能体会到脑子用力的程度,以前是从来没有过,以前就听说过“脑力活动”这个词,却没体会过脑力活动会累吗?不就思考思考吗?做这题目才真正让我用尽脑子去思考了,因为练习太少,基本上都是练视频里实例,视频外的都没有去练过,所以好多知识不熟练,还好学到老师的一些方法,遇到问题时能有一些方法去找错误的原因,虽然知识记不得,但是通过方法我就能顺腾摸瓜,配合着JDK帮助文档,我就能相对轻松的完成试题,如果不是有方法的话,遇到问题还真不知道怎么办呢?

        这里总结一下做试题里遇到的一些问题:其中有一题是要求计算一个字符串中每个字母出现的次数,如“aabaeed”中a出现了几次,b出现了几次等,以前就听说过有一个叫正规表达式的东西,用这个处理字符串很方便,我想用这个东西,可惜我没学过,只有另想办法。于是想了一个方法,思路很简单:

1、定义一个字母Letter类,这个类有两个属性,一个是letter,用来保存单个的字母,一个是count,用来保存这个字母出现的次数。

2、取出字符串中的第一个字母,保存到Letter类的letter属性中,然后用这个字母去和字符串中的每一字母比较,我用的是indexOf,如果返回值不是-1就让count加1,当查找完整个字符串后,则得到了第一个字母出现的次数。

3、把刚刚己找出次数的字母从符串中全部删除,得到一个新的字符串,然后执行步骤2。

4、用循环重复步骤2、3,直到所有的字母都找出出现的次数,再把所有的Letter对象按count属性排序即可。

这个思路虽说很简单,可是实现起来却处处碰壁,就两个问题,要么空指针异常,要么数组下标越界,就这两个问题真的是让我绞尽脑汁,绞尽脑汁这个词终于深刻体会了一回,真的是这样子的。

还有Letter[] letters = new Letter[26];这句代码只是new 了一个数组对象,并不是new了26个Letter对象,当时就是这个出现的空指针异常搞的我头晕

还有一道IO的题目,要求把一个文本文件的每一行都加上行号与冒号:

File f = new File(hello.txt);

BufferedReader bufRead = new BuferedReader(new FileReader(f));

BufferedWriter bufWirte = new BuferedWriter(new FileWriter(f));

bufRead.readLine();//这里读到的内容将是null

这个搞了我好久找不到原因,后来发现原来不能让BufferedReader和BufferedWriter同时关联File文件,所以先定义BufferedReader把文件数据全读出来后再定义BuferedWriter把新内容写进去。

还有一个问题是:File类中的获取路径与获取Name的两个方法,把它们的获取的字符串相加,并不会在路径与name中加入“ \ ”,这个必须自己手动加入。

原文地址:https://www.cnblogs.com/runwind/p/4454735.html