1.编写出一个通用的人员类(Person),该类具有姓名(姓名),年龄(Age),性别(Sex)等域。然后对人类的继承得到一个学生类(学生),该类能够存放学生的5门课的成绩,并能求出平均成绩。最后在主函数中对学生类的功能进行验证。
包oop_shiYanJiu;
import java.util。*;
class Person {
私有字符串名称;
私人年龄;
私人字符串性;
public Person(String name,int age,String sex){
超();
this.name = name;
this.age =年龄;
this.sex =性;
}
public String getName(){
返回名称;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
回归年龄;
}
public void setAge(int age){
this.age =年龄;
}
public String getSex(){
回归性;
}
public void setSex(String sex){
this.sex =性;
}
public String toString(){
返回“姓名:”+ this.name +“,”+“年龄:”+ this.age +“,”+“性别:”+ this.sex;
}
}
class学生扩展人{
public Student(String name,int age,String sex){
超级(姓名,年龄,性别);
}
扫描仪阅读器=新扫描仪(System.in);
double sum = 0;
double [] grade = new double [5];
public double getAverage(){
的System.out.println( “输入五门学科成绩:”);
for(int i = 0; i <grades.length; i ++){
grade [i] = reader.nextDouble();
sum = sum + grade [i];
}
sum = sum / 5;
返还金额;
}
public String toString(){
return super.toString()+“,”+“平均成绩:”+ sum;
}
}
公共类_1 {
public static void main(String [] args){
人p =新学生(“张无忌”,21,“男”);
学生s =(学生)p;
s.getAverage();
的System.out.println(s.toString());
}
}
2.创建一程序,该程序包括一个筛子类,后者有三个数据成员,即筛子的面数,筛子的数据成员。为这个类声明一个名为roll()的成员方法,它以随机的方式返回下一次掷筛子得的点数。
包oop_shiYanJiu;
import java.util.Random;
class Griddle {
private int mianNum = 6 ;;
private int maxNum = 6;
private static int i = new Random()。nextInt(6)+1;
public int roll(){
返回this.i;
}
public Griddle(){
System.out.printf( “筛子信息:” + “\ n” + “面数:” + mianNum + “\ n” + “最大点数:” + MAXNUM);
的System.out.println();
}
}
公共类_2 {
public static void main(String [] args){
Griddle g = new Griddle();
的System.out.println( “筛子的正面点数是:” + g.roll());
}
}
3.(1)定义一个游戏中Hero 英雄的类,在该类中定义英雄的名字, 生命值和等级3 个属性,定义一个构造函数完成对生命值和等级的初始化,分别赋初值为100,1。同时实现名字的输入和英雄信息的输出。
(2)在上一题的基础上,为英雄再定义拥有一个参数的构造方法,传入一个英雄类型的值,如果为1,则为普通英雄,生命值为100,如果该值为2,则为高级英雄,生命值初始化为200。
(3)在上两英雄类型的基础上,为英雄添加一个基本战斗的方法, 该方法拥有一个英雄类型的参数,当传入另一个英雄时,能降低对方100 点血。 再增加一个绝招的重载方法,加入一个战斗类型参数,通过输入不同绝招参数,降低对方不同的血量。
package oop_shiYanJiu;
import java.util.*;
class Hero{
//英雄名字
private String name;
//生命值
public int health;
//等级
private int grade;
public Hero() {
this.health=100;
this.grade=1;
Scanner reader = new Scanner(System.in);
System.out.println("请输入英雄的名字:");
this.name = reader.nextLine();
print();
}
public Hero(int i) {
Scanner reader = new Scanner(System.in);
System.out.println("请输入英雄的名字:");
this.name = reader.nextLine();
if(i == 1) {
System.out.println("普通英雄成功过创建:");
this.health=100;
}
if(i==2) {
System.out.println("高级英雄成功过创建:");
this.health=200;
}
this.grade=1;
print();
}
public void print() {
System.out.println("Hero信息:");
System.out.println("姓名:"+this.name);
System.out.println("生命值:"+health);
System.out.println("等级:"+grade);
if(health <= 0) {
System.out.println("该英雄已经死亡。");
}
System.out.println("----------------------------------------------------");
}
public void fighting(Hero h) {
System.out.println("----------------------------------------------------");
h.health-=100;
System.out.println(h.name+"受攻击,生命值减少100");
System.out.println("英雄信息更新:");
h.print();
}
public void fighting(Hero h,int n) {
System.out.println("----------------------------------------------------");
h.health-=n;
System.out.println(h.name+"受攻击,生命值减少"+n);
System.out.println("英雄信息更新:");
h.print();
}
}
public class _3 {
public static void main(String[] args) {
Hero h = new Hero();
Hero h1 = new Hero(2);
h1.fighting(h, 100);
}
}
编写一个程序,输入N个学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。
思路:
设计一个学生类Stud,除了包括no(学号)、name(姓名)和deg(成绩)数据成员外,有两个静态变量sum和num,分别存放总分和人数,另有成员函数disp(),用于输出数据成员的值,另有一个静态成员函数avg(),它用于计算平均分。在main()函数中定义了一个对象数组用于存储输入的学生数据。同时输出成绩在80-90之间学生信息。
package oop_shiYanJiu;
class Stud{
class Student{
private int no;
private String name;
private double deg;
//构造方法
public Student(int no, String name, double deg) {
super();
this.no = no;
this.name = name;
this.deg = deg;
}
//构造器
public Student() {
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getDeg() {
return deg;
}
public void setDeg(double deg) {
this.deg = deg;
}
public String disp() {
return " no:" + this.no + ", name:" + this.name + ", deg:" + this.deg;
}
}
private static double sum = 0;
private static int num = 3 ;
private static double avg = 0;
static Student [] s = new Student[3];
public Stud() {
s[0] = new Student(100,"狄仁杰",98);
s[1] = new Student(101,"白起",95);
s[2] = new Student(102,"刘备",87);
}
//显示全部学生信息
public void disp() {
System.out.println("显示班级的学生信息:");
for(int i = 0;i < 3;i++) {
System.out.println("学号:"+s[i].no+",姓名:"+s[i].name+",成绩:"+s[i].deg);
}
}
//显示成绩在80-90的学生信息
public void disp1() {
System.out.println("显示成绩在80-90的学生信息:");
for(int i = 0; i < 3;i++) {
if(s[i].getDeg() > 80 && s[i].getDeg() < 90) {
System.out.println("学号:"+s[i].no+",姓名:"+s[i].name+",成绩:"+s[i].deg);
}
}
}
//求平均分
public static double avg() {
for(int i = 0;i < 3;i++) {
sum = sum + s[i].getDeg();
}
avg = sum/3;
return avg;
}
}
public class _5 {
public static void main(String[] args) {
Stud stu = new Stud();
double avg = stu.avg();
stu.disp();
System.out.println();
stu.disp1();
System.out.println();
System.out.println("班级的平均分是:");
System.out.println(avg);
}
}
编写一个程序,统计学生成绩,其功能包括输入学生的姓名和成绩,按成绩从高到低排列打印输出,对前%70的学生定为合格(PASS),而后30%的学生定为不合格(FAIL)
思路:
设计一个类student,包含学生的姓名和成绩等数据。
设计一个类Compute,这个类中包含了多个学生的信息,方法有 sort()、disp(),,它们分别用于按成绩排序和输出数据。
package oop_shiYanJiu;
import java.util.Arrays;
class Computer {
class XueSheng {
private int no;
private String name;
private double deg;
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getDeg() {
return deg;
}
public void setDeg(double deg) {
this.deg = deg;
}
// 构造器
public XueSheng(int no, String name, double deg) {
super();
this.no = no;
this.name = name;
this.deg = deg;
}
public XueSheng() {
}
}
XueSheng [] x = new XueSheng[10];
public Computer() {
x[0] = new XueSheng(100,"狄仁杰",87);
x[1] = new XueSheng(101,"白起",80);
x[2] = new XueSheng(102,"赵云",76);
x[3] = new XueSheng(103,"李白",90);
x[4] = new XueSheng(104,"孙尚香",97);
x[5] = new XueSheng(105,"后裔",67);
x[6] = new XueSheng(106,"韩信",74);
x[7] = new XueSheng(107,"诸葛亮",45);
x[8] = new XueSheng(108,"孙悟空",83);
x[9] = new XueSheng(109,"廉颇",65);
}
//显示信息
public void disp() {
for(int i = 0;i < x.length*0.7;i++) {
System.out.println("姓名是:"+x[i].getName()+","+"学号是:"+x[i].getNo()+","+"分数是:"+x[i].getDeg()+" 合格(PASS)");
}
for(int i = 7 ;i<10;i++) {
System.out.println("姓名是:"+x[i].getName()+","+"学号是:"+x[i].getNo()+","+"分数是:"+x[i].getDeg()+" 不合格(FALL)");
}
}
//按成绩排序
public void sort() {
for (int i = 0;i < x.length-1;i++) {
for(int j = 0;j < x.length-i-1;j++) {
if(x[j].getDeg() < x[j+1].getDeg()) {
XueSheng X = new XueSheng();
X = x[j];
x[j] = x[j+1];
x[j+1] = X;
}
}
}
}
}
public class _8 {
public static void main(String[] args) {
Computer c = new Computer();
c.sort();
System.out.println("输出学生信息:");
c.disp();
}
}
设计一个词典类Dic,每个单词包括英文单词及对应的中文含义,并有一个英汉翻译成员函数,通过查词典的方式将一段英语翻译成对应的汉语。
思路: 字典项类DicItem包括EngLish(英语单词)、Chinese(对应中文含义)数据成员,字典类包括一个字典项类的列表,包含Add()(添加单词)和trans(英汉翻译)成员函数。
package oop_shiYanJiu;
class Dic{
class DicItem{
String Chinese;
String English;
//构造器
public DicItem(String English, String Chinese) {
super();
this.Chinese = Chinese;
this.English = English;
}
public DicItem() {
super();
}
}
DicItem [] d = new DicItem[5];
int size = 0;//单词个数
public Dic() {
d[0] = new DicItem("my","我的");
d[1] = new DicItem("you","你的");
d[2] = new DicItem("student","学生");
d[3] = new DicItem("is","是");
size = 4;
}
//添加单词
public void add(String English,String Chinese) {
int index = this.check(English);
if(index != -1) {
d[index].Chinese = Chinese;
}
else {
expond();
d[size++] = new DicItem(English,Chinese);
System.out.println("添加单词成功:"+English+":"+Chinese);
}
}
//获得动态数组元素个数
public int getsize() {
return size;
}
//翻译英文
public void tranE(String English) {
for(int i = 0;i < size;i++) {
if(d[i].English.equals(English)) {
String data = d[i].Chinese;
System.out.println(English+"的中文意思是:"+data);
}
}
System.out.println("该单词不再此词典中。");
}
//扩容
public void expond() {
if(d.length == size) {
DicItem [] D = new DicItem[d.length*3/2+1];
System.arraycopy(d, 0, D, 0, d.length);
d = D;
}
}
//查找单词
public int check(String English) {
for(int i = 0;i < size;i++) {
if(d[i].English.equals(English)) {
return i;
}
}
return -1;
}
//显示表中的单词及释义
public void showInfo() {
System.out.println("该字典中的单词:");
for(int i = 0;i < size;i++) {
System.out.println(d[i].English+":"+d[i].Chinese);
}
}
//插入单词
// public void insert(int i,String English,String Chinese) {
// int index = this.check(English);
// if(index != -1) {
// d[i].Chinese = Chinese;
// }else {
// expond();
// for(int j = size;j >= index;j--) {
// d[j+1] = d[j];
// }
// d[i].English = English;
// d[i].Chinese = Chinese;
// }
//
// }
//删除单词
public void delete(String English) {
int index = this.check(English);
//删除
if(index != -1) {
for(int i = index;i < d.length-1;i++) {
d[i] = d[i+1];
}
size--;
}
else {
System.out.println("该单词不存在此词典中。");
System.out.println("删除失败。");
}
}
}
public class _9 {
public static void main(String[] args) {
Dic D = new Dic();
D.showInfo();
D.delete("i");
D.showInfo();
D.add("james", "詹姆斯");
D.add("my", "我的,是我的");
D.showInfo();
}
}
自已封装一个动态数组类,可以根据用户传递的数据,动态的对数组的长度进行扩展;
类名是:MyArray
方法有:
void add(int value); //追加一个值
vold remove(int index); //根据索引,删除一个值
void add(int position,int value); //在指定位置插入一个数值
void set(int position,int value); //修改某个位置的数值
int get(int index); //根据索引,获得元数的值
int size(); //获得动态数组中元素的个数;
package oop_shiYanJiu;
import java.util.Arrays;
class MyArray{
private int size = 0;//数组的长度
private int [] array = new int[10];
//追加一个值
public void add(int n) {
expand();
array[size++] = n;
}
//扩容
public void expand() {
if(size == array.length) {
int [] newarray = new int[array.length*3/2+1];
System.arraycopy(array, 0, newarray, 0, array.length);
array = newarray;
}
}
//获得数组的元素个数
public int getSize() {
int sum = size;
System.out.println("当前数组的元素个数是:"+sum);
return sum;
}
//获得当前数组的长度
public int getLength() {
int sum = array.length;
System.out.println("当前数组的长度是:"+sum);
return sum;
}
//根据索引获得值
public int get(int index) {
int v = array[index];
System.out.println("该索引对应的值是:"+v);
return v;
}
//修改某个位置上的元素值
public void set(int position,int value) {
System.out.println(position+"位置上的元素值被修改为:"+value);
array[position] = value;
}
//输出数组
public void output() {
System.out.println(Arrays.toString(array));
}
//删除某个位置上的值
public void remove(int index) {
System.out.println("删除位置"+index+"上的元素值后,数组变为:");
for(int i = index;i < array.length-1;i++) {
array[i] = array[i+1];
}
}
//在某个位置上插入元素值
public void add(int position,int value) {
System.out.println("在位置"+position+"上插入的元素"+value+"后,数组变为:");
for(int i = size;i >= position;i--) {
array[i+1] = array[i];
}
array[position] = value;
}
}
public class _10 {
public static void main(String[] args) {
MyArray a = new MyArray();
for(int i = 0;i < 13;i++) {
a.add(i+20);
System.out.println(i+20);
}
a.getSize();
a.getLength();
a.get(3);
a.set(3, 100);
System.out.println("修改后得数组是:");
a.output();
a.remove(6);
a.output();
a.add(6, 999);
a.output();
}
}
用单例模式编写一个进程管理器的例子。并测试。
package oop_shiYanJiu;
class Pet{
//1.创建一个private构造方法
private Pet() {
System.out.println("创建了一个宠物类。。。");
}
//2.在类的内部创建一个对象
private static Pet pet;
//3.定义一个静态方法,用来获得唯一实例
public static Pet getInstance() {
if(pet == null) {
pet = new Pet();
}
return pet;
}
public void showPet() {
System.out.println("这里有很多只宠物。");
}
}
public class _11{
public static void main(String[] args) {
Pet p = Pet.getInstance();
Pet p1 = Pet.getInstance();
Pet p2 = Pet.getInstance();
p.showPet();
}
}