Java习题——面向对象综合练习题

这篇博客主要展示了几个Java编程练习题,涵盖了面向对象设计的基本概念。包括创建Person和Student类,实现Hero类及其战斗方法,设计BankAccount类管理银行账目,以及学生类Stud的多种应用场景,如计算平均分、筛选特定成绩范围的学生等。此外,还提到了自定义动态数组类MyArray的实现,包含添加、删除、修改和获取元素等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.编写出一个通用的人员类(Person),该类具有姓名(Name)、年龄(Age)、性别(Sex)等域。然后对Person 类的继承得到一个学生类(Student),该类能够存放学生的5门课的成绩,并能求出平均成绩。最后在Main函数中对student类的功能进行验证。

package cn.edu.nefu.exercise1;
/*1.编写出一个通用的人员类(Person),该类具有姓名(Name)、年龄(Age)、性别(Sex)等域。
然后对Person 类的继承得到一个学生类(Student),该类能够存放学生的5门课的成绩,并能求出平均成绩。
最后在Main函数中对student类的功能进行验证。*/
public class Person {
	String Name;
	int Age;
	String Sex;
	public Person(String name, int age, String sex) {
		super();
		Name = name;
		Age = age;
		Sex = sex;
	}
}
package cn.edu.nefu.exercise1;

import java.util.Scanner;

//然后对Person 类的继承得到一个学生类(Student),该类能够存放学生的5门课的成绩,并能求出平均成绩。
public class Student extends Person {

	int[] scores = new int[5];
	public Student(String name, int age, String sex) {
		super(name, age, sex);
		scores();
		
	}
	//存入成绩
	public void scores(){
		for(int i = 0;i<scores.length;i++){
			System.out.println("请输入"+this.Name+"同学第"+(i+1)+"门成绩:");
			Scanner sc = new Scanner(System.in);
			scores[i] = sc.nextInt();
		}
	}
	//求平均成绩
	public void aveScores(){
		int sum = 0;
		for(int i = 0;i<scores.length;i++){
			sum += scores[i];
		}
		System.out.println(this.Name+"同学平均成绩是:"+(double)sum/scores.length);
		
	}

}
package cn.edu.nefu.exercise1;

public class Test {
	public static void main(String[] args) {
		Student s = new Student("李一",19,"男");
		s.aveScores();
	}
}

3..(1)定义一个游戏中Hero 英雄的类,在该类中定义英雄的名字, 生命值和等级3 个属性,定义一个构造函数完成对生命值和等级的初始化,分别赋初值为100,1。同时实现名字的输入和英雄信息的输出。

(2)在上一题的基础上,为英雄再定义拥有一个参数的构造方法,传入一个英雄类型的值,如果为1,则为普通英雄,生命值为100,如果该值为2,则为高级英雄,生命值初始化为200。

(3)在上两英雄类型的基础上,为英雄添加一个基本战斗的方法, 该方法拥有一个英雄类型的参数,当传入另一个英雄时,能降低对方100 点血。 再增加一个绝招的重载方法,加入一个战斗类型参数,通过输入不同绝招参数,降低对方不同的血量。

package cn.edu.nefu.exercise2;

import java.util.Scanner;

public class Hero {
//	3..(1)定义一个游戏中Hero 英雄的类,在该类中定义英雄的名字, 生命值和等级3 个属性,
//	 定义一个构造函数完成对生命值和等级的初始化,分别赋初值为100,1。同时实现名字的输入和英雄信息的输出。
	String name;
	int vitality;//生命值
	int grade; 
	
	//名字输入
	public void nameInput(){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入英雄名字:");
		name = sc.nextLine();
	}
	//英雄信息输出
	public void showInfo(){
		System.out.println("姓名:"+name+"\n生命值:"+vitality+"\n等级:"+grade);
		System.out.println();
	}
	
	public Hero(){
		super();
		this.vitality = 100;
		this.grade = 1;
		nameInput();
		showInfo();
	}
	
	
//	(2)在上一题的基础上,为英雄再定义拥有一个参数的构造方法,传入一个英雄类型的值,
//	 如果为1,则为普通英雄,生命值为100,如果该值为2,则为高级英雄,生命值初始化为200。
	public Hero(int type){
		nameInput();
		if(type==1){
			this.vitality = 100;
			System.out.println("普通英雄创建成功;");
		}else if(type == 2){
			this.vitality = 200;
			System.out.println("高级英雄创建成功;");
		}
		this.grade = 1;
		showInfo();
	}
//	(3)在上两英雄类型的基础上,为英雄添加一个基本战斗的方法, 该方法拥有一个英雄类型的参数,
//	当传入另一个英雄时,能降低对方100 点血。 再增加一个绝招的重载方法,加入一个战斗类型参数,
//	通过输入不同绝招参数,降低对方不同的血量。
	public void combat(Hero hero){
		hero.vitality -= 100;
		System.out.println(hero.name+"受到攻击,生命值减100;");
		hero.showInfo();
	}
	
	public void combat(Hero hero,int type){
		if(type == 1){
			hero.vitality -= 50;
			System.out.println(hero.name+"受到轻度攻击,生命值减50");
		}else if(type == 2){
			hero.vitality -= 80;
			System.out.println(hero.name+"受到中度攻击,生命值减80");
		}else{
			hero.vitality -= 1
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值