Java语言程序设计(第3版)
上QQ阅读APP看书,第一时间看更新

编程练习

4.1 定义一个名为Person的类,其中含有一个String类型的成员变量name和一个int类型的成员变量age,分别为这两个变量定义访问方法和修改方法,另外再为该类定义一个名为speak的方法,在其中输出其name和age的值。画出该类的UML图。编写程序,使用上面定义的Person类,实现数据的访问和修改。

4.2 定义一个名为Circle的类,其中含有double型的成员变量centerX和centerY表示圆心坐标,radius表示圆的半径。定义求圆面积的方法getArea()方法和求圆周长的方法getPerimeter()。为半径radius定义访问方法和修改方法。定义一个带参数构造方法,通过给出圆的半径创建圆对象。定义默认构造方法,在该方法中调用有参数构造方法,将圆的半径设置为1.0。画出该类的UML图。编写程序测试这个圆类的所有方法。

4.3 定义一个名为Rectangle的类表示矩形,其中含有length和width两个double型的成员变量表示矩形的长和宽。要求为每个变量定义访问方法和修改方法,定义求矩形周长的方法getPerimeter()和求面积的方法getArea()。定义一个带参数构造方法,通过给出的长和宽创建矩形对象。定义默认构造方法,在该方法中调用有参数构造方法,将矩形长宽都设置为1.0。画出该类的UML图。编写程序测试这个矩形类的所有方法。

4.4 定义一个Triangle类表示三角形,其中三个double型变量a、b、c表示三条边长。为该类定义两个构造方法:默认构造方法设置三角形的三条边长都为0.0;带三个参数的构造方法通过传递三个参数创建三角形对象。定义求三角形面积的方法area(),面积计算公式为area=Math.sqrt(s*(s−a)*(s−b)*(s−c)),其中s=(a+b+c)/2。编写另一个程序测试这个三角形类的所有方法。

4.5 设计一个名为Stock的类表示股票,该类包括:

  • 一个名为symbol的字符串数据域表示股票代码;
  • 一个名为name的字符串数据域表示股票名称;
  • 一个名为previousPrice的double型数据域,用来存储股票的前一日收盘价;
  • 一个名为currentPrice的double型数据域,用来存储股票的当前价格;
  • 创建一个给定特定代码和名称的股票构造方法;
  • 一个名为getChangePercent()方法,返回从前一日价格到当前价格变化的百分比。

画出该类的UML图并实现这个类。编写一个测试程序,创建一个Stock对象,它的股票代码是600000,股票名称是“浦发银行”,前一日收盘价是25.5,当前的最新价是28.6,显示市值变化的百分比。

4.6 编写程序,使用递归方法打印输出Fibonacci数列的前20项。Fibonacci数列是第一和第二个数都是1,以后每个数是前两个数之和,用公式表示为: f1 = f2 = 1, fn = fn−1 + fn−2 (n≥ 3)。要求使用方法计算Fibonacci数,格式如下:

4.7 为一元二次方程ax2+bx+c=0设计一个名为QuadraticEquation的类。这个类包括:

  • 代表三个系数的私有数据域a、b和c;
  • 一个参数为a、b和c的构造方法;
  • a、b、c的三个getter方法;
  • 一个名为getDiscriminant()的方法返回判别式,b2−4ac;
  • 名为getRoot1()和getRoot2()的方法返回方程的两个根。

这些方法只有在判别式为非负数时才有用,如果判别式为负,这些方法返回0。

画出该类的UML图并实现这个类。编写一个测试程序,提示用户输入a、b和c的值,然后显示判别式的结果。如果判别式为正数,显示两个根;如果判别式为0,显示一个根;否则显示“方程无根”。

4.8 定义一个名为TV的类表示电视机。每台电视机都是一个对象,每个对象都有状态(电源开或关、当前频道、当前音量)以及动作(打开、关闭、转换频道、调节音量等)。TV类的UML如图4-7所示。

图4-7 TV类的UML图

4.9 编写一个名为MyInteger的类,该类的UML图如图4-8所示。提示:在UML类图中,静态成员使用下画线进行标识。请编写应用程序测试该类方法的使用。

图4-8 MyInteger类的UML图

4.10 回文素数是指一个数同时为素数和回文数。例如,131是一个素数,同时也是一个回文数,757也是回文素数。编写程序,显示前20个回文素数。每行显示10个数,数字之间用空格隔开。显示如下。

4.11 定义一个名为Account的类实现账户管理,它的UML图如图4-9所示。编写一个应用程序测试Account类的使用。

图4-9 Account类的UML图