发表于: 2017-08-13 01:12:14
1 1026
出去瞎逛达了几天。
新买的书到了,师兄推荐的:《Java就该这样学》。
这本书在目录之前有个学习之前的文章。说的是一些学习之前要做的事情或者作者对于编程学习的一些认知,这不仅包括了Java语言的学习。
大致地浏览了一下目录,这本书是我学Java买的最薄的一本书,仅四章。颇有师傅领进门,修行在个人的味道。
这几天没有学习的日子里唯一做的和学习相关的事情就是思考该怎样学习。之前看《疯狂Java讲义》并没有让我疯狂地爱上学习Java,尽管我知道我以后的工作需要这些。看书的枯燥乏味就像天天吃没有油盐的菜,难以下咽,书上的知识理解之后只依靠例子和少得可怜的本章练习很难引起我的兴趣。唯一疯狂的是在凌晨完成了人民币大写转换程序和五子棋。
学习之前的文章看完之后对作者的的看法和建议(尤其是20遍地代码)深感赞同。
“20遍地敲代码”是作者发明的。但是在未阅读之前我就有体会。大二的时候学S7-200,老师上课讲了顺序法编程,讲来讲去自己感觉就是不够深刻,直到周末在空荡荡的实验教室里什么书都不看自己独立地把跑马灯和交通灯写了下来,调试成功后感觉对顺法编程有了更深的理解。
那就开始吧。
第一章 认识Java程序
作者用的是eclipse,我也换成了这个软件,并且将主题设置为黑色。
在用eclipse写程序运行时,出现了这个窗口关不掉的情况:
上网查了之后,在主函数的末尾加上了如下的代码:
w.addWindowListener(new WindowAdapter() { //关闭窗口
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}) ;
问题就解决了。看字面的意思,涉及到窗口事件监听等等。不着急理解这是什么。将代码打20遍再说。
第一章第一个要做的是画一个王八,在画王八之前我画了个笑脸:
你嘴角向下的时候很美 就像安河桥下清澈的水
这个笑脸需要先了解drewOval()和drawArc()中的参数列表,然后再画。画圆,眼睛,嘴。位置和大小都是在运行之后进行调整,会有点繁琐,但是不觉得什么。
好了,可以画个王八了:
在看drawOral()方法时,一直不明白网上说的参数列表中前两个数字所代表的坐标的位置。直到我运行了这个:
这个坐标是一个矩形的左上角的坐标,加上后面的两个数字指明了矩形的位置和大小,而要打印的是内接圆,若为矩形,则打印椭圆;若为正方形,则打印正圆。
打印出来了蠢萌蠢萌的王八:
代码:
import java.awt.* ;
import java.awt.event.* ;
public class MyTest {
public static void main(String[] args) {
Frame w = new Frame() ;
w.setSize(300 , 400) ;
MyPanel mp = new MyPanel() ;
w.add(mp) ;
w.show() ;
w.addWindowListener(new WindowAdapter() { //关闭窗口
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}) ;
}
}
class MyPanel extends Panel {
public void paint(Graphics g) {
/*
//画一个笑脸:
g.drawOval(50 , 100 , 150 , 150);//圆圈
g.fillOval(80 , 140 , 10 , 10) ;//左眼
g.fillOval(157 , 140 , 10 , 10) ;//右眼
g.drawArc(85 , 160 , 77 , 50 , 180 , 180) ;//嘴
*/
g.drawOval(100 , 20 , 50 , 75) ;//头
//g.setColor(Color.BARK);
g.fillOval(115 , 30 , 5 , 5) ;//左眼
g.fillOval(130 , 30 , 5 , 5) ;//右眼
g.drawOval(40 , 80 , 50 , 60) ;//左前脚
g.drawOval(158 , 80 , 50 , 60) ;//右前脚
g.drawOval(40 , 180 , 50 , 60) ;//左后脚
g.drawOval(158 , 180 , 50 , 60) ;//右后脚
g.drawArc(130 , 220 , 70 , 70 , 180 , 90) ;//尾巴
g.drawArc(120 , 220 , 80 , 70 , 180 , 90) ;
g.fillOval(55 , 70 , 140 , 190) ;//外龟壳
g.setColor(Color.WHITE) ;
g.fillOval(60 , 75 , 130 , 180) ;//内龟壳
g.setColor(Color.BLACK);
g.drawLine(75 , 100 , 105 , 125) ;//花纹1
g.drawLine(105 , 125 , 140 , 125) ;//2
g.drawLine(140 , 125 , 170 , 100) ;//3
g.drawLine(105 , 125 , 95 , 155) ;//4
g.drawLine(140 , 125 , 150 , 155) ;//5
g.drawLine(95 , 155 , 55 , 180) ;//6
g.drawLine(150 , 155 , 190 , 180) ;//7
g.drawLine(95 , 155 , 105 , 185) ;//8
g.drawLine(150 , 155 , 140 , 185) ;//9
g.drawLine(105 , 185 , 140 , 185) ;//10
g.drawLine(105 , 185 , 70 , 220) ;//11
g.drawLine(140 , 185 , 180 , 220) ;//12
}
}
上面所有的参数都是一个一个运行、修改直到合适为止。
上面所用到的知识点在《疯狂Java讲义》的第11章。假如我像原来那样看书和读代码,那么我不会对drawLine()和drawArc()等方法和一些知识点理解得很详细和深入。
敲完二十遍,睡觉。
评论