Assignment #1: Warmups

简答

  1. 为什么 Java 被称作是“平台无关的语言”?
  2. JDK 和 JRE 的区别是什么?
  3. 什么是值传递和引用传递?

简答题可以去网上找相关内容,不过要在最后给出参考链接。不能只答一两句话,单纯的复制粘贴网上的答案,要结合自己的理解,必要时可以举例、代码、作图用来解释。

The Fibonacci sequence

13世纪,意大利数学家列奥纳多·斐波那契(Leonardo Fibonacci)为了解释兔子数量的几何增长,设计了一个数学序列,现在以他的名字命名。这个序列中的前两项Fib(0)和Fib(1)分别是0和1,后面的每一项都是前两项的和。因此,斐波那契数列的前几项看起来是这样的:

Fib(0)=0
Fib(1)=1
Fib(2)=1 (0 + 1)
Fib(3)=2 (1 + 1)
Fib(4)=3 (1 + 2)
Fib(5)=5 (2 + 3)

编写一个程序,显示斐波那契数列中的元素,从Fib(0)开始,直到元素小于或等于10,000为止。因此,你的程序应该生成以下示例运行:

Drawing Centered Text

你的任务是写一个 GraphicsProgram 来显示下面这行文字:

Java rocks my socks!

文本应该以 SansSerif 28号字体显示,而且应该在图形界面中水平竖直居中。

Bonus:如果您想在窗口中添加10个标签,所有标签都具有相同的字体、大小,并且水平居中,但具有不同的y坐标,您可以如何组织代码?

Drawing a face

您的工作是绘制一个机器人的脸,如下面的示例运行所示:


因为 Java 基础知识的学习较为乏味,所以我在网上找了一个图形化的库来增加作业的乐趣,这是图形库的 API 文档

这个图形库对 Java 基本图形库进行了封装,比较简单,做到会用即可,不用深入了解。

以这次作业为例,我简单介绍一下它,比如我们要在屏幕上画一个蓝色的矩形,可以使用 GRect 类绘制:

关于图形界面的宽度和放置元素的位置:

下面这个程序的目的是向您展示一个具有多个关键形状的图形程序。我们实现了两个矩形(一个蓝色和一个黄色),一个红色椭圆,在同一个位置画一个黑色的未填充矩形。在屏幕的中央,我们写着“Programming is Awesome”。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import acm.graphics.*;
import acm.program.*;
import java.awt.*;

public class extends GraphicsProgram {

public void run() {
// half the height of the screen.
double centerY = getHeight()/2;

// make and add a blue square
GRect blueSquare = new GRect(80, 80); // width and height are 80
blueSquare.setColor(Color.BLUE); // make the square blue
blueSquare.setFilled(true); // fill the square
add(blueSquare, 70, 70); // add the square to the screen

// add a long yellow rectangle
GRect yellowRect = new GRect(40, 360);
yellowRect.setColor(Color.YELLOW);
yellowRect.setFilled(true);
add(yellowRect, 600, 10);

// make and add a red oval
GOval redOval = new GOval(120, centerY); // width and height
redOval.setColor(Color.RED);
redOval.setFilled(true);
add(redOval, 200, 180); // add to location (200, 180)

// make and add a rectangle which fits around the red oval
GRect circleOutline = new GRect(120, centerY);
add(circleOutline, 200, 180);

// add a piece of text
GLabel label = new GLabel("Programming is Awesome!");
label.setFont("Courier-52");
add(label, 10, centerY);

// this object is never added
GRect dudeWheresMyRect = new GRect(600, 600);
dudeWheresMyRect.setFilled(true);
// since it is not added, we will never see it...
}
}