javaSE-oop 综合

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();

        

}

 

}

  

 

 

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值