大一 JAVAOOP-T1 类 类 和 对象-(美和易思)
- 学生 实践练习
需求 说明
创建 Dota 游戏中的防御塔类(TowerDefense),通过两个坐标属性显示防御塔所在的位置。
程序运行结果如图所示
实现思路
(1)创建防御塔(TowerDefense)类。
(2)在该类中定义了两个属性,第一个属性是横坐标 x,第二个属性是纵
坐标 y,数据类型都是 int。
(3)定义一个方法 showMessage()显示数据,在该方法中对防御塔的坐标
位置进行输出。
(4)在类中定义 main()方法,实例化 TowerDefense 对象,通过引用
变量给对象属性赋值。调用 showMessage()方法输出结果。
ublic class TowerDefense {
int x;
int y;
public void showmessage() {
System.out.println("防御塔的坐标位置:"+ x +","+y);
}
public static void main(String[] args) {
T1 td = new T1();
td.x=2;
td.y=3;
td.showmessage();
}
}
2. 学生 实践练习
需求说明
在 Hero 类中定义一个 int 类型的变量 output,表示英雄的血量,当 battle 方法执行一次,
output变量值减少 10。在控制台随机输入一个小于100 的整数,将该整数值赋于变量 output,
作为英雄的初始血量。在 main()方法中定义一个循环,至少循环 5 次,在循环中调用英雄
对象的 battle 方法,如果在执行循环时英雄的血量已经小于或者等于零,则停止循环,系
统给出友好提示信息,英雄已经牺牲,否则最终输出英雄的血量。
实现思路
(1)创建英雄(Hero)类。
(2)在该类中定义战斗(battle)方法,在该方法中 int 类型变量 count,count 初始值为
1,count 表示一个计数器,用于记录战斗的次数。
(3)在 battle()方法中判断当前英雄的血量是否小于等于 0,如果条件成立,则使用
Syste.exit(0),结束当前运行的程序。
(4)在主方法中创建 Scanner 对象,使用该对象的 nextInt()方法接收键盘输入的 int 类
型的整数,并将该值赋值给 output 变量。创建循环,在循环中调用 hero 对象的 battle()
方法。程序运行结果如图所示
import java.util.Scanner;
public class Hero {
int output;//血量
int count = 1;//攻击次数
public void battle() {
//方法每执行一次,英雄血量减少10
output -= 10;
if (output<=0) {
System.out.println(“对不起您的英雄已经牺牲”);
//当前表示结束当前运行的程序
System.exit(0);
} else {
System.out.println(“第”+count+++“次攻击,您英雄当前的血量”+count);
}
}
public static void main(String[] args) {
T2 hero = new T2();//创建英雄对象
Scanner input = new Scanner(System.in);
System.out.println(“请输入英雄的血量”);
//将从控制台接到的整数赋值给output变量
hero.output = input.nextInt();
for (int i = 0; i < 6; i++) {
hero.battle();
}
System.out.println(“战斗结束,您英雄的血量:”+hero.output);
}
}
3. 学生实践练习
需求说明
通过给定可变形参方法,计算任意给定的多个 int 类型数据之和。
实现思路
(1)定义可变形参方法,参数类型是 int 类型。
(2)定义变量 sum,接受最终的和。
(3)通过 for 循环计算最终的和值。
(4)在主方法中调用可变形参方法,输出最终和值。
public class TestCal {
//定义求和方法
public int sum(int...nums) {
int sum = 0;
for (int num : nums) {
sum += num;
}
return sum;
}
}
public class Text {
public static void main(String[] args) {
TestCal cal = new TestCal();
int result = cal.sum(1,3);
System.out.println(result);
//调用求和方法
result = cal.sum(1,2,3,4);
System.out.println(result);
//用数组形式调用
result = cal.sum(new int[]{3,4,5});
}
}
4. 学生实践练习
需求说明
创建士兵(Soldiers)类,在该类中定义有参构造方法,该方法有一个 String 类型参数 name,
代表士兵的姓名,两个 int 类型变量 x 和 y,分别表示士兵被实例化后所在的坐标位置,x 代
表横坐标,y 代表纵坐标。在主方法中使用 for 循环创建 5 个士兵对象,每个士兵对象的姓
名以及 x,y 坐标是通过用户在控制台输入的。
实现思路
(1)创建士兵类 Soldiers
(2)在该类中定义一个有参数的构造方法,该方法包含一个 String 类型的形参变量 name,
和两个 int 类型变量 x 和 y,在构造器中输入该士兵信息。
(3)创建 main()方法,在该方法中创建 Scanner 对象,用于接收用户从控制台输入的信息,
并在 main()方法中创建一个循环次数为 5 的循环,在该循环中使用户在定义的构造方法创建
Soldiers 对象
(4)运行该程序。
import java.util.Scanner;
public class Soldiers {
public Soldiers(String name,int x,int y) {
System.out.println("英雄姓名:"+name+",初始化横坐标="+x+",纵坐标="+y);
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
System.out.println("请输入第"+(i+1)+"个士兵的名字");
String name = input.next();
System.out.println("请输入横坐标:");
int x = input.nextInt();
System.out.println("请输入纵坐标:");
int y = input.nextInt();
Soldiers s = new Soldiers(name, x, y);
}
}
}