00:04
现在很多地方都可以看到这样的自动售票机,地铁啊,高铁啊都有这样的自动售票机。在这种自动售票机上呢,你选择线路,然后呢,投入纸币或者硬币。如果你投入的这个纸币或者硬币足够多啊,超过这个票面的额度,那么他就会打印出一张车票给你,然后找你钱。那我们怎么在程序当中写一个程序去反映这样一个自动售票机的工作过程呢?当然我们不可能要在这个程序当中呢,去把自动售票机那个样子给他做出来,我们要表达的是它的那种工作过程,所以呢,这需要一定程度上的抽象,对吧,我们需要忽略掉他的一些细节,然后呢,关注于它主要的工作流程,那我们看到说呢。这个自动售票机需要用户做两个操作。一个操作是选择线路,另外一个操作是投入硬币或者纸币,然后自动售票机会根据用户选择的线路以及他投入的纸币或者硬币的金额来决定该做什么样的动作。他可能做两个动作,一个动作是输出那个票子,给给人家打印出那个票子,第二个动作可能是告诉用户说你现在投进来的钱还不够,也就是说用户会做两个输入。
01:24
这两个输入来了以后。要对他们这两个数据做一个判断,这个判断会得到两个不同的结果,一个结果是OK,我可以给你那个票子。另外一个结果是不行,我得告诉你说这件事儿不不行,所以我们要写的程序呢,应该去反映这样一种现实。我们输入的选择的那个线路和我们投入的那个。金额他们是不是相适应,能不能给你出票,还是要给你啊打印给你显示出一些不同的话语来,所以从计算机的角度看呢,这就是说我们的程序,还记得我们上周在说所有的程序都可以被理解为。
02:10
读一点输入,做点计算,最后做一点输出。只不过中间有多复杂,输入有多有少,计算有复杂有简单,输出有多有少而已,所有的程序都是这样子的。所以这个程序要做的要读的输入无非是线路和金额,要做的计算无非是够不够钱,要做的输出无非是票子或者是什么,或者是说不够,你还要再继续投钱。那我们怎么来把这个程序给做出来呢?当然在做这个程序的时候呢,我们可以再做一次简化,我们假设说我们现在实现的一种售票机是只有一条线路,只能卖一种票价的。那我们来看看这样的一个程序可以怎么写,我们先实现了这样一段代码。这段代码当中呢?
03:01
看起来我们的票面金额似乎是十块钱啊,因为你投进去多少钱呢,它会减去十,然后告诉你说要找你多少钱。那在这个程序当中呢,我们看到了这些东西,上周我们提到过。如果出现了两条斜杠,那么这两条斜杠后面所有的内容都只是给人看的,他们叫做注释,人是不管的。我们的这个程序呢,通过1234这四个注释,很好的把我们的代码分隔成了四个部分,看起来很清爽。每一条注释都说明了那一个部分是干什么的,这是一种很有效的代码的分割。我们利用注释把我们的代码分成了有意义的区块,然后在这些区块里面做一些有意义的事情,这个代码本身很简单啊。我们。先输出了说请投币,然后呢,读入了用户投进来的金额那个amount,然后我们就把车票打印出来了啊,票价还是十元,最后呢,我们出一个枣林,说我们要拿你输入的那个金额减去十,就是我们要找你的钱对不对,所以说说找零是多少啊,这个这个程序其实非常的简单,我们看到我们的这四个注释呢,就把我们的代码分成了四个部分。
04:18
依次就是初始化读入投币金额,打印车票,最后呢,计算并打印找零。这四个部分通过四条注释被分割了出来。注释只是给人读的,它对程序的功能没有任何影响。计算机彩排管理的注释,但是呢,它会使得程序更加容易被理解。那么当然,如果你的注释要有多行,我们有另外一种写法,就是斜线星号,一直到下一个星号斜线为止,那在这种情况下呢,你就可以做多行的注释,同时呢,这种注释也可以用来实现行内的注释,我们来试一下这个程序哈。我们来运行它,请投币,我们投十块钱,OK,他给我们出了一张票,然后告诉我们说找零是零块钱啊,如果我们再试一下,我们说请投币,我们投12块。
05:06
然后他说枣林是两块,看起来挺好的,对不对,如果我们现在说请投币,我们投了五块钱。那张票明明要十块钱呢,我就投了15块钱进去,结果呢,他还是给我出了票,然后告诉我说我要找你付五块。我不知道他怎么能够找出这个富的钱来啊。所以。这个程序是有问题的,对不对,这个程序的问题就是在于他根本就没有去判断。我投进去的钱够不够用?他只是很简单的说,啊,你,你投进来的钱减去十啊,就是我应该找你的钱,他以为我投进去的钱总是够用的。那这样的一个非常愚昧的程序肯定是不行的,对不对?我们的程序应该有一定的智能,所谓的智能有的时候没有那么高级,只是说他能够去做一些判断,那就是智能了。那怎么样能够让Java的程序来做判断呢?
06:03
比如说我们其实想要知道的是说,你输进来的那个amount是不是大于等于十。只有大于等于十的时候,我们才能给你出票,才能给你找零,否则的话我们不能出票,不能找找零,对不对?所以我们先要来看看Java当中有没有办法能够知道amount是不是大于等于十,这该怎么做呢?我们可以先试试看,如果在输入amount之后,我们就来输出一下amount的值。我们除了要他输出amount之外,我们看看它能不能给我们输出,说amount大于等于十,这个事情是不是可以。我们发现他没有给我红红波浪,没有给我红叉叉,这说明他能做这件事情。呃,学习计算机有一个非常大的好处,就是所有的事情其实你就在计算机上去尝试好了,你你你不会犯多大的错误,对不对,你你最大的错误只不过他有个红叉叉,只不过是这个程序不能运行,最坏最坏最坏无非是大不了把你的电脑搞死机了,你你重启就好了,关机总总可以恢复回来的啊,学计算机这是最大的好处,不像有的学科啊,一下子不得了了,爆炸了或者怎么样,没有我们计算机绝对不会,你在计算机上再怎么捣鼓,你的程序写的再不好,你也不可能让你的计算机爆炸了,所以。
07:20
放心大胆的去试去。揣摩,去想你各种可能的做法,然后他如果可以,那就是可以的一种做法,现在我们去尝试了,说大于等于十行不行,他没有错,那我们相信它是可以做的,可是结果是什么呢?我们来试一下,看我们来运行这个程序,现在请投币,我给他了12。它在输出了12之后。输出了一个Q。True这个单词的意思就是真的对的,所以12之后有一个true表明说。我们12大于十这件事情是对的,是真的。
08:01
我们再试一个,如果请投币,我说的是十。他在输出了十以后也是true,也是对的,如果我现在请投币给了一个五,他说的是force force的意思是假的,也就是说amount大于等于十,这个论断是假的。
我来说两句