java学习5

来源:互联网 发布:matlab mac安装教程 编辑:程序博客网 时间:2024/05/16 09:43

昨天老师布置一道做 一个模拟票务系统的练习题,这题呢本身并没有太多特殊的地方,除了比之前做的内容更多,更繁杂一点而已.但是当我做好了之后,一运行,却发现一直没输出,卡在一个地方,然后过了一会儿现实的是堆内存不足。于是我又马上去找堆内存的设置,将堆内存加到2048M之后还是不行。其中有问题的地方如下

private static ArrayList<Ticket> tickets = new ArrayList<Ticket>();/** * 将所有的票实例化放入票的集合中 */public static void creatTickets() {for (int i = 1; i <= 4; i++) {for (int j = 1; i <= 10; j++) {for (int k = 1; k <= 20; k++) {int[] seat = { i, j, k };Ticket ticket = new Ticket(seat);tickets.add(ticket);}}}}

问题提示是给集合添加对象那里。当我各种设置内存的方法都不行之后我,重新再来看程序,因为当时认为这段程序太简单了,肯定不会出错。所以我试着将添加对象那里改成输出,结果一运行,发现停不下来,最终才发现,原来第二层循环的条件写错,成了死循环。


这问题呢说小不小,说大不大。但是也给我的学习提了醒,当出现问题的时候首先要分析程序,找到问题的根源,比如内存不足:一是死循环,二是大量的数据;但是我这例子里面总共只有800数据,虽说比起之前的十几个数据确实算大数据了,但是对电脑来说根本不算什么。所以首先考虑的应该是死循环,代码写错了,结果我去找设置内存的了,到最后时间花了,问题没解决。只有找到问题的根源才能解决它。


另外对于程序的编写,尤其是面向对象编程,我觉得首先最重要的是搞清楚这个程序中的各个部分它们自身的属性方法,以及它们之间的关系。只要搞清楚这些,剩下的就只是用学会的语言将其描述出来了,就像写故事,已经建立好了故事大纲已经人物事件关系,就只需要将其表达出来。但是编程也像写故事,在水平上还是有区别的,同样的故事有人可以写的很吸引人,有的却很无聊,同样功能的程序,有些的系统要求低,运行效率高,有些却恰恰相反。但是作为初学者来说,我认为首先应该重视掌握的就是在编程之前理解程序的结构,及各部分的关系。用写故事的话就是要先写大纲,确定人物事件关系,而不是一开始就来要求写的文辞华丽,结果却故事混乱。

原创粉丝点击