Tank类
编写一个Java应用程序该程序中有两个类:Tank(用于刻画坦克)和Fight(主类)。在创建类时,所有的类的名字命名加上自己的姓名拼音首字母(例如:张三,命名为Tank_ZS、Fight_ZS),具体要求如下:
(1)Tank类有一个double类型的变量speed用于刻画坦克的速度;一个int型变量 bulletAmount,用于刻画坦克的炮弹数量。Tank类定义了speedUp()和speedDown()方法,体现克有加速、减速行为;定义了setBulletAmount(intp)方法,用于设置坦克炮弹的数量;定义了fire))方法,体现坦克有开炮行为。Tank类的UML图如图4.2所示。
(2)在主类Fight的main方法中用Tank类创建坦克并让坦克调用方法设置炮弹的数量,显示坦克的加速、减速和开炮等行为。
Flight.java
public class Fight {
public static void main(String args[]) {
Tank tank1,tank2;
tank1 = new Tank();
tank2 = new Tank();
tank1.setBulletAmount(10);
tank2.setBulletAmount(10);
System.out.println("tank1的炮弹数量:"+tank1.getBulletAmount());
System.out.println("tank2的炮弹数量:"+tank2.getBulletAmount());
tank1.speedUp(80);
tank2.speedUp(90);
System.out.println("tank1目前的速度:"+tank1.getSpeed());
System.out.println("tank2目前的速度:"+tank2.getSpeed());
tank1.speedDown(15);
tank2.speedDown(30);
System.out.println("tank1目前的速度:"+tank1.getSpeed());
System.out.println("tank2目前的速度:"+tank2.getSpeed());
System.out.println("tank1开火:");
tank1.fire();
System.out.println("tank2开火:");
tank2.fire();
tank2.fire();
System.out.println("tank1的炮弹数量:"+tank1.getBulletAmount());
System.out.println("tank2的炮弹数量:"+tank2.getBulletAmount());
tank1.speedUp(230);
tank2.speedUp(240);
System.out.println("tank1目前的速度:"+tank1.getSpeed());
System.out.println("tank2目前的速度:"+tank2.getSpeed());
tank1.brake();
tank2.brake();
System.out.println("tank1目前的速度:"+tank1.getSpeed());
System.out.println("tasnk2目前的速度:"+tank2.getSpeed());
}
}
Tank.java
public class Tank {
double speed;//声明double型变量speed,刻画速度
int bulletAmount;//声明int型变量bulletAmount,刻画炮弹数量
void speedUp(int s) {
speed += s;//将s+speed赋值给speed
if(speed>=220) {
speed = 220;
}
}
void speedDown(int d) {
if(speed-d>=0)
speed -= d;//将speed-d赋值给speed
else
speed = 0;
}
void setBulletAmount(int m) {
bulletAmount = m;
}
int getBulletAmount() {
return bulletAmount;
}
double getSpeed() {
return speed;
}
void fire() {
if(bulletAmount>=1){
bulletAmount -=1;//将bulletAmount-1赋值给bulletAmount
System.out.println("打出一发炮弹");
}
else {
System.out.println("没有炮弹了,无法开火");
}
}
void brake() {
speed = 0;
}
}
计算机与CD
编写一个Java应用程序模拟在计算机中放入CD即计算机将CD类型的对象作为自己的一个成员变量。在创建类时,所有的类的名字命名加上自己的姓名拼音首字母(例如:张三,命名为Computer_ZS、javaCD_ZS、User_ZS),具体要求如下。
(1)有3个源文件:Computer.javaCD.java和User.java。其中CDjava中的CD类负责创建光盘对象;Computer.java中的Computer类有类型CD名字是includeCD的成员变量,Computer类负责创建计算机对象;Userjava是主类。
(2)在主类的main方法中首先使用CD类创建一个对象dataCD然后使用Computer类再创建一个对象computerIMB,computerIMB对象将CD类的实例dataCD的引用传递给computerIMB对象的成员变量includeCD。
CD.java
public class CD {
int size;
int content[];
public void setSize(int size) {
this.size = size;
content = new int[size];
}
public int getSize() {
return size;
}
public int [] getContent() {
return content;
}
public void setContent(int [] b) {
int min=Math.min(content.length,b.length);
for(int i=0;i<min;i++)
content[i] = b[i];
}
}
Compuer.java
public class Computer {
int data[];
CD includeCD;
public void putCD(CD cd) {
includeCD = cd;
int size=includeCD.getSize();
data=new int[size];
}
void copyToComputer() {
int [] b = includeCD.getContent();
int min=Math.min(data.length,b.length);
for(int i=0;i<min;i++) {
data[i] = b[i];
}
}
public void addData(int m) {
for(int i=0;i<data.length;i++) {
data[i] = data[i]+m;
}
}
void copyToCD() {
includeCD.setContent(data);
}
void showData() {
for(int i=0;i<data.length;i++) {
System.out.printf("%3d",data[i]);
}
}
}
User.java
public class User {
public static void main(String args[]) {
CD dataCD = new CD();
int b[] ={1,2,3,4,5,6,7,8};
dataCD.setSize(b.length);
dataCD.setContent(b);
int a[]=dataCD.getContent();
System.out.println("dataCD上的内容:");
for(int i=0;i<a.length;i++)
System.out.printf("%3d",a[i]);
Computer computerIMB = new Computer();
computerIMB.putCD(dataCD);//computerIMB调用putCD(CD cd)方法,将dataCD的引用传递给cd
System.out.println("\n将dataCD的数据复制到计算机:computerIMB.");
computerIMB.copyToComputer();//computerIMB调用copyToComputer()方法
System.out.println("computerIMB上的内容:");
computerIMB.showData();
int m=12;
System.out.println("\ncomputerIMB将每个数据增加"+m);
computerIMB.addData(m);
System.out.println("computerIMB将增值后的数据复制到CD:dataCD");
computerIMB.copyToCD();//computerIMB调用copyToCD()方法
System.out.println("dataCD上的内容:");
a=dataCD.getContent();
for(int i=0;i<a.length;i++)
System.out.printf("%3d",a[i]);
CD cd = new CD();
cd.content = computerIMB.data;
System.out.println("");
System.out.println("cd对象上的内容:");
for(int i=0;i<cd.getContent().length;i++)
System.out.printf("%3d",cd.content[i]);
}
}
家族的姓氏
编写程序模拟一个家族成员的姓名,姓名由两部分构成:姓氏和名字。编写一个 FamilyPerson类,该类有一个静态的String型成员变量surname,用于存储姓氏;一个实例的String型成员变量name,用于存储名字。在主类MainClass的main方法中首先用类名访问surname,并为surname赋值,然后FamilyPerson创建3个对象:father、sonOne和 sonTwo,并分别为fathersonOne和sonTwo的成员变量name赋值。在创建类时,所有的类的名字命名加上自己的姓名拼音首字母(例如:张三,命名为FamilyPerson)
FamiluPerson.java
public class FamilyPerson {
static String surname;
String name;
public static void setSurname(String s){
surname = s;
}
public void setName(String s) {
name = s;
}
}
MainClass.java
public class MainClass {
public static void main(String args[]) {
FamilyPerson.surname = "李";//用类名FamilyPerson访问surname,并为surname赋值:"李"
FamilyPerson father,sonOne,sonTwo;
father = new FamilyPerson();
sonOne = new FamilyPerson();
sonTwo = new FamilyPerson();
father.setName("向阳");//father调用setName(String s),并向s传递"向阳"
sonOne.setName("抗日");
//FamilyPerson.setName("抗日");
sonTwo.setName("抗战");
System.out.println("父亲:"+FamilyPerson.surname+father.name);
System.out.println("大儿子:"+FamilyPerson.surname+sonOne.name);
System.out.println("二儿子:"+FamilyPerson.surname+sonTwo.name);
FamilyPerson.setSurname("张");// father调用setSurName(String s),并向s传递"张"
System.out.println("父亲:"+FamilyPerson.surname+father.name);
System.out.println("大儿子:"+FamilyPerson.surname+sonOne.name);
System.out.println("二儿子:"+FamilyPerson.surname+sonTwo.name);
}
}