学以致用是学习的目的,
不然后学了就放了那是在浪费生命。
同样,
我们学习编程也要解决现实中的出现的问题。
在街头我们常会看到这样一种挑战,在本子上从1一直写到1000,能保证连续不出错,就可以获得奖金。挑战者不少,但实际能获奖金者就寥寥无几了,因为这样重复性很强的工作,人们很难集中注意力将其一字不差的给完成。 但这要是交给计算机来做,能写到他倒闭!
for(int i =1;i<1001;i++){
System.out.println(i);
}
现在以上的小例子并不能给我们带来奖金,它只能告诉我们,计算机的优势在于可以胜任重复性的工作!如下面这个需求:
要给每个人发张贺卡,除了名字不一样外,其他的都一样。
如果没有程序的话,我们会怎么做?
我们会打开word, 或者别的编辑工具,然后开始替换名字,然后一张张的保存。
我就一直在想,
人在电脑上所能完成的,
我们用程序也一定可以完成!
那面上面我们人执行的步骤拆解开来,
我们需要电脑按以下流程来走:
1.读取到我们的背景图
2.循环我们的名单列表
3.对每一个名字拼出欢迎语
4.把拼好的欢迎语放到背景图指定位置
5.输出新的图片
接着我们上期用maven创建java工程,
(链接)
在创建好的工程下,
我们把 背景图放到 resources 目录下,
如果 没有可以新建
然后在App.java里面开始按照我们上面整理的顺序写代码
public class App
{
public static void main( String[] args )
{
//模拟名单
List<String> names = Arrays.asList("小刀","花音");
try {
for (String name : names) {
//读取背景图
InputStream inputStream = App.class.getResourceAsStream("/background.png");
BufferedImage image = ImageIO.read(inputStream);
Graphics2D graphics = image.createGraphics();
//设置字体
Font font=new Font("AaFangMeng (Non-Commercial Use)",Font.PLAIN,76);
graphics.setColor(Color.black);
graphics.setFont(font);
graphics.drawString("亲爱的"+name+"同学:",30,1450);
String fileName = name+".png";
//保存成图片
ImageIO.write(image, "PNG", new File(fileName));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行之后,就能看到输出的两张图片
小伙伴们可以自己试试哦~
文字:微笑的小小刀
排版:花音