开发者社区> RainstormGod> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Java学习:面向对象开发作业示例

简介: Java面向对象相关的一些习题示例,包含代码
+关注继续查看

 目录

1.设计一个包含多个构造方法的类,并分别用这些构造方法实例化对象。

2.编写一个类Calculate1,实现加、减两种运算,然后,编写另一个派生类Calculate2,实现乘、除两种运算。

3.建立三个类:居民、成人、官员。居民包含身份证号、姓名、出生日期,而成人继承自居民,多包含学历、职业两项数据;官员则继承自成人,多包含党派、职务两项数据。要求每个类的字段都以属性的方式对外提供数据输入输出的功能。

4.编写一个类,其中包含一个排序的方法sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。

5.设计一个立方体类Box,它能计算并输出立方体的体积和表面积。

6.编写一个程序,设计一个点类Point,实例化两个点之后,能调用其方法求两个点之间的距离。

7、 写一个学生类,包括属性: 学号,班号,姓名,年龄,性别;要求用无参构造,方法获得:学号,班号,姓名,年龄(只能小于100岁,大于1,否则重新输入) ,性别(只能男或者女,否则重新输入),最后在主方法输出你对一个学生对象赋值的信息。

8、设计一个BankAccount类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。BankAccount类包括,账号(BankAccountId)、开户日期Date(日期),Money(金额),Rest(余额)。另有一个构造方法和三个成员方法Bankin()(处理存入账),Bankout()处理取出账)和和一个负责生成账号的自动增长的方法。

9、 编写一个程序,已有若干学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。思路:设计一个学生类Stud,除了包括no(学号)、name(姓名)、和deg(成绩)数据成员外。有两个静态变量sum和num,分别存放总分和人数,另有一个构造方法、一个普通成员方法disp()和一个静态成员方法avg(),它用于计算平均分。

10.编写一个程序,统计学生成绩,其功能包括输入学生的姓名和成绩,按成绩从高到低排列打印输出,对前70%的学生定为合格(PASS),而后30%的学生定为不合格(FAIL)。思路: 设计一个类student,包含学生的姓名和成绩等数据。设计一个类Compute: sort()、disp(),它们分别用于按成绩排序和输出数据。


1.设计一个包含多个构造方法的类,并分别用这些构造方法实例化对象。

class Like {

   public String name;

   public String age;

   public String hobby;

   public Like() {

   }

   public Like(String name, String age, String hobby) {

      this.name = name;

      this.age = age;

      this.hobby = hobby;

   }

   // 说话

   public void say() {

      System.out.println(name + "说:沸羊羊你个臭**");

   }

   public void saying() {

      System.out.println(name + "说:美羊羊你 TMD 真双标");

   }

   public void show() {

      System.out.println("我可是" + name + age + hobby);

   }

}

public class NO1 {

   public static void main(String[] args) {

      Like landawang = new Like("懒大王,", "你什么身份,我什么地位", ",你在狗叫什么!");

      Like laozi = new Like("羊村村霸,", "村长都得给我递烟!", "TM在那逼逼赖赖!");

      landawang.show();

      laozi.show();

      landawang.say();

      laozi.saying();

   }

}

imageimage.gif编辑

2.编写一个类Calculate1,实现加、减两种运算,然后,编写另一个派生类Calculate2,实现乘、除两种运算。

public class NO2 {

   public static void main(String[] args) {

      Calculate1 c1 = new Calculate1();

      Calculate2 c2 = new Calculate2();

      System.out.println("c1的加法:" + c1.plus(3, 2));

      System.out.println("c1的减法:" + c1.subtraction(5, 3));

      System.out.println("c2的乘法:" + c2.multiply(4, 4));

      System.out.println("c2的除法:" + c2.remove(6, 3));

   }

}

class Calculate1 {

   public double plus(double x, double y) {

      return x + y;

   }

   public double subtraction(double x, double y) {

      return x - y;

   }

}

class Calculate2 extends Calculate1 {

   public double multiply(double x, double y) {

      return x * y;

   }

   public double remove(double x, double y) {

      return x / y;

   }

}

imageimage.gif编辑

3.建立三个类:居民、成人、官员。居民包含身份证号、姓名、出生日期,而成人继承自居民,多包含学历、职业两项数据;官员则继承自成人,多包含党派、职务两项数据。要求每个类的字段都以属性的方式对外提供数据输入输出的功能。

class Person {

   public String no;

   public String name;

   public String birth;

   public Person(String no, String name, String birth) {

      LO(no);

      LOV(name);

      LOVE(birth);

   }

   public void LO(String no) {

      System.out.println("身份证号:" + no);

      this.no = no;

   }

   public void LOV(String name) {

      System.out.println("姓名:" + name);

      this.name = name;

   }

   public void LOVE(String birth) {

      System.out.println("出生日期:" + birth);

      this.birth = birth;

   }

}

class Adult extends Person {

   public String study;

   public String job;

   public Adult(String no, String name, String birth, String study, String job) {

      super(no, name, birth);

      ST(study);

      JO(job);

   }

   public void ST(String study) {

      System.out.println("学历:" + study);

      this.study = study;

   }

   public void JO(String job) {

      System.out.println("职业:" + job);

      this.job = job;

   }

}

class Official extends Adult {

   public String political;

   public String post;

   public Official(String no, String name, String birth, String study, String job, String political, String post) {

      super(no, name, birth, study, job);

      Pol(political);

      Pos(post);

   }

   public void Pol(String Political) {

      System.out.println("党派:" + Political);

      this.political = Political;

   }

   public void Pos(String post) {

      System.out.println("职务:" + post);

      this.post = post;

   }

}

public class NO3 {

   public static void main(String[] args) {

      Person m = new Person("4************0", "美羊羊", "2000-02-02");

      System.out.println();

      Adult f = new Adult("4************1", "沸羊羊", "2001-03-08", "小学羊", "添购");

      System.out.println();

      Official l = new Official("4************2", "懒大王", "2002-08-08", "研究羊", "", "羊党", "羊村村霸");

   }

}

imageimage.gif编辑

4.编写一个类,其中包含一个排序的方法sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。

import java.util.Arrays;

public class NO4 {

   public static void main(String[] args) {

      int[] obj = { 3, 6, 1, 10, 8 };

      obj = sort(obj);

      // 随便建一个字符的数组

      String[] objs = { "b", "a", "c", "h", "d" };

      objs = sort(objs);

      // 打印

      System.out.println("字符输出\t");

      for (int i = 0; i < objs.length; i++) {

          System.out.print(objs[i] + " ");

      }

      System.out.println("\t");

      System.out.println("整数输出\t");

      for (int i = 0; i < obj.length; i++) {

          System.out.print(obj[i] + " ");

      }

   }

   // Arrays.sort()方法排序,默认从小到大

   public static int[] sort(int[] nums) {

      Arrays.sort(nums);

      return nums;

   }

   // 字符串排序,用冒泡排序,通过compareTo(str)方法进行比较,该方法是根据字典表的顺序进行比较,如果参数大于本值,则返回-1,如果相等返回0,大于返回1

   public static String[] sort(String[] strs) {

      for (int i = 0; i < strs.length; i++) {

          for (int j = 0; j < strs.length - i - 1; j++) {

             if (strs[j].compareTo(strs[j + 1]) < 1) {

                String temp = strs[j];

                strs[j] = strs[j + 1];

                strs[j + 1] = temp;

             }

          }

      }

      return strs;

   }

}

imageimage.gif编辑

5.设计一个立方体类Box,它能计算并输出立方体的体积和表面积。

import java.util.Scanner;

class Box {

   private int length;

   private int width;

   private int heigth;

   void setBox(int l, int w, int h) {

      length = l;

      width = w;

      heigth = h;

   }

   int volume() {

      System.out.println("立方体的体积是;" + length * width * heigth);

      return 0;

   }

   int superficial() {

      System.out.println("立方体的表面积是;" + 2 * (length * width + width * heigth + length * heigth));

      return 0;

   }

}

public class NO5 {

   public static void main(String[] args) {

      Box b = new Box();

      System.out.println("下面将输入你所要计算的立方体体积和表面积");

      System.out.println("下面将输入你所要计算的立方体长");

      Scanner sc = new Scanner(System.in);

      int i = sc.nextInt();

      System.out.println("下面将输入你所要计算的立方体宽");

      int j = sc.nextInt();

      System.out.println("下面将输入你所要计算的立方体高");

      int k = sc.nextInt();

      b.setBox(i, j, k);

      b.volume();

      b.superficial();

   }

}

imageimage.gif编辑

6.编写一个程序,设计一个点类Point,实例化两个点之后,能调用其方法求两个点之间的距离。

class Point {

     private double x;

     private double y;

     public Point(double x, double y) {

          this.x = x;

          this.y = y;

     }

     /*

      * 计算两点之间的距离 公式:根号下(x1-x2)^2+(y1-y2)^2

      */

     public static void distance(Point p1, Point p2) {

          double sum = Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));

          System.out.println("两点间的距离为\t");

          System.out.println(sum);

     }

}

public class NO6 {

     public static void main(String[] args) {

          Point.distance(new Point(0, 0), new Point(3, 4));

          //原点到(3,4)的距离

     }

}

imageimage.gif编辑

7、 写一个学生类,包括属性: 学号,班号,姓名,年龄,性别;要求用无参构造,方法获得:学号,班号,姓名,年龄(只能小于100岁,大于1,否则重新输入) ,性别(只能男或者女,否则重新输入),最后在主方法输出你对一个学生对象赋值的信息。

import java.util.Scanner;

public class NO7 {

   public static class Student { // public class开头的内部类为动态的,而主程序以public static class开头

      // java中,类中的静态方法不能直接调用动态方法,只有将某个内部类修饰为静态类,能够在静态类中调用该类的成员变量与成员方法。即此处应改为public

      // static class Student

      int num;// 学号

      int classnum;// 班号

      String name;// 姓名

      int age;// 年龄

      String sex;// 性别

      public Student()// 空参构造

      {

          super();

      }

      public Student(int num, int classnum, String name, int age, String sex) // 有参构造

      {

          this.num = num;

          this.classnum = classnum;

          this.name = name;

          this.age = age;

          this.sex = sex;

      }

      // 各属性的gettersetter方法

      public int getNum() {

          return num;

      }

      public void setNum(int num) {

          this.num = num;

      }

      public int getClassnum() {

          return classnum;

      }

      public void setClassnum(int classnum) {

          this.classnum = classnum;

      }

      public String getName() {

          return name;

      }

      public void setName(String name) {

          this.name = name;

      }

      public int getAge() {

          return age;

      }

      public void setAge(int age) {

          this.age = age;

      }

      public String getSex() {

          return sex;

      }

      public void setSex(String sex) {

          this.sex = sex;

      }

      // 数组中顺序显示所有学生信息

      void Print(Student[] array)// Student[] array为对象数组,其在使用时必须逐一实例化

      {

          for (int i = 0; i < array.length; i++) {

             System.out.println("学号:" + array[i].num + 班号:" + array[i].classnum + 姓名:" + array[i].name

                   + 年龄:" + array[i].age + 性别:" + array[i].sex);

          }

      }

      // 通过学生学号查找学生信息

      void Find(int num, Student[] array)// 参数为num。和学生类数组array

      {

          for (int i = 0; i < array.length; i++) {

             if (num == array[i].getNum()) {

                System.out.println("学号:" + array[i].num + 班号:" + array[i].classnum + 姓名:" + array[i].name

                      + 年龄:" + array[i].age + 性别:" + array[i].sex);

             }

          }

      }

      public static void main(String[] args) {

          // 法一:手动输入学生信息

          Scanner sc = new Scanner(System.in);

          System.out.println("请输入学生人数:");

          int x = sc.nextInt();

          Student[] array = new Student[x];

          for (int i = 0; i < array.length; i++) {

             array[i] = new Student();// 若在编写一个java程序时没有添加无参构造方法,编译器会自动添加无参构造方法;

             // 但是若编写时添加了有参构造方法而未添加无参构造方法,则编译器只认有参构造方法而不会默认添加无参构造方法,需要注意的是如果需要使用无参构造方法,一定要在类中里面添加

             System.out.println("请输入第" + (i + 1) + "个学生的学号");

             int num = sc.nextInt();// 输入学号

             array[i].setNum(num);

             System.out.println("请输入第" + (i + 1) + "个学生的班号");

             int classnum = sc.nextInt();// 输入班号

             array[i].setClassnum(classnum);

             System.out.println("请输入第" + (i + 1) + "个学生的姓名");

             String name = sc.next();// 输入姓名

             array[i].setName(name);

             System.out.println("请输入第" + (i + 1) + "个学生的年龄");

             int age = sc.nextInt();// 输入年龄

             if (age < 100 && age > 1)

                array[i].setAge(age);

             else {

                System.out.println("请重新输入");

                continue;

             }

             System.out.println("请输入第" + (i + 1) + "个学生的性别");

             String sex = sc.next();// 输入性别

             if (sex != " " || sex != " ")

                array[i].setSex(sex);

             else {

                System.out.println("请重新输入");

                continue;

             }

          }

          System.out.println("所有学生初始信息如下:");

          array[0].Print(array);

          System.out.println("----------------------------------");

          System.out.println("学号为201801学生信息如下:");

          array[0].Find(201801, array);

          System.out.println("----------------------------------");

      }

   }

}

imageimage.gif编辑

8、设计一个BankAccount类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。BankAccount类包括,账号(BankAccountId)、开户日期Date(日期),Money(金额),Rest(余额)。另有一个构造方法和三个成员方法Bankin()(处理存入账),Bankout()处理取出账)和和一个负责生成账号的自动增长的方法。

import java.util.Scanner;

public class denglu2 {

   public static void main(String[] args){

       Scanner sc = new Scanner(System.in);

       geren1[] user = new geren1[10];

       //System.out.println(user[1]);

       BankAccount(sc,user);

   }

   public static void BankAccount(Scanner sc,geren1[] user){

       while (true)

       {

           System.out.println("===银行系统===");

           System.out.println();

           System.out.println("1,登录\t\t2,注册\t\t3,退出");

           int xuanze = sc.nextInt();

           if (xuanze == 1)

           {

               //print(user);

               denglu1(sc,user);

           }else if(xuanze == 2){

             BankAccountId(sc,user);

               //print(user);

           }else if(xuanze == 3){

               break;

           }

           else{System.out.println("输入有误!");}

       }

   }

   public static void BankAccountId(Scanner sc, geren1[] user){

       System.out.println("====   ====");

       for (int i=0;i<user.length;i++)

       {

           if (user[i] == null)

           {

               System.out.println("请输入注册账号:");

               //user[i][0] = sc.next();

               String zhanghao = sc.next();

               System.out.println("请输入注册密码:");

               //user[i][1] = sc.next();

               String mima = sc.next();

               System.out.println("请输入您的真实姓名:");

               String name = sc.next();

               System.out.println("请输入手机号:");

               //zijin[i][2] = sc.nextInt();

               String phone = sc.next();

               geren1 gr = new geren1(zhanghao,mima,name,phone,i);

               user[i] = gr;

               System.out.println("注册成功");

               return;

           }

       }

   }

   public static void denglu1(Scanner sc,geren1[] user){

       System.out.println("====   =====");

       System.out.println("请输入账号:");

       String zh = sc.next();

       System.out.println("请输入密码:");

       String mm = sc.next();

       for (int i = 0;i<user.length;i++){

           //System.out.println(user[i]);

           if (user[i] != null){

               geren1 gr = user[i];

               //System.out.println(gr.getZijin());

               if (zh.equals(gr.getZhanghao()) && mm.equals(gr.getMima()))

               {

                   System.out.println("登录成功!");

                   grjiemian(sc,user,gr);

                   return;

               }

           }

       }

       System.out.println("无此账号或密码错误!");

   }

   public static void grjiemian(Scanner sc,geren1[] user,geren1 gr){

       while(true){

           System.out.println("==== 个人页面 =====");

           System.out.println("请选择您要办理的业务:");

           System.out.println("1,存款\t\t\t2,取款");

           System.out.println("3,查询余额\t\t4,转账");

           System.out.println("5,查询个人信息\t6,退出登录");

           int xuanze = sc.nextInt();

           if (xuanze == 1){

               System.out.println("请输入存款金额:");

               gr.setZijin(gr.getZijin()+sc.nextInt());

               System.out.println("存款成功,当前余额:"+gr.getZijin()+"");

           }else if (xuanze == 2){

               System.out.println("请输入取款金额:");

               int qk = sc.nextInt();

               if(qk>gr.getZijin()){

                   System.out.println("余额不足。。。");

               }else{

                   gr.setZijin(gr.getZijin()-qk);

                   System.out.println("取款成功,当前余额:"+gr.getZijin()+"");

               }

           }else if(xuanze == 3){

               System.out.println("当前余额:"+gr.getZijin()+"");

           }

           else if(xuanze == 4){

               System.out.println("请输入转账账号:");

               String zh = sc.next();

               System.out.println("请输入转账金额:");

               int jine = sc.nextInt();

               for (int zhao = 0;zhao<user.length;zhao++){

                   if (user[zhao] !=null){

                       geren1 gr1 = user[zhao];

                       if (zh.equals(gr1.getZhanghao())){

                           gr1.setZijin(gr1.getZijin()+jine);

                           gr.setZijin(gr.getZijin() - jine);

                       }

                   }

               }

           }

           else if(xuanze == 5){

               gr.print();

           }

           else if(xuanze == 6){

               return;

           }

       }

   }

}

imageimage.gif编辑

9、 编写一个程序,已有若干学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。思路:设计一个学生类Stud,除了包括no(学号)、name(姓名)、和deg(成绩)数据成员外。有两个静态变量sum和num,分别存放总分和人数,另有一个构造方法、一个普通成员方法disp()和一个静态成员方法avg(),它用于计算平均分。

import java.util.Scanner;

public class Student {

   int no;

   String name;

   double score;

   static double sum;

   static int num;

  

   public Student() {

     

   }

   public void disp() {

      Scanner sc= new Scanner(System.in);

     

      System.out.println("请输入存放同学的位数为*");

      num = sc.nextInt();

      System.out.println("请输入学号");

      no = sc.nextInt();

      System.out.println("请输入名字");

      name = sc.next();

      System.out.println("请输入成绩");

      score = sc.nextDouble();

      sum = sum+score;

   }

  

   static double ave() {return sum/num;}

  

   public void showInto() {

      System.out.println("该同学学号为"+no);

      System.out.println("该同学名字为"+name);

      System.out.println("该同学成绩为"+score);

      System.out.println("截至该同学目前平均成绩为"+ave());

   }

}

\\

public class Stud {

   public static void main(String[] args) {

      System.out.println("请存放三个学生的信息");

      Student one = new Student();

      Student two = new Student();

      Student three = new Student();

     

      one.disp();

      one.showInto();

     

      two.disp();

      two.showInto();

     

      three.disp();

      three.showInto();

   }

}

imageimage.gif编辑

10.编写一个程序,统计学生成绩,其功能包括输入学生的姓名和成绩,按成绩从高到低排列打印输出,对前70%的学生定为合格(PASS),而后30%的学生定为不合格(FAIL)。思路: 设计一个类student,包含学生的姓名和成绩等数据。设计一个类Compute: sort()、disp(),它们分别用于按成绩排序和输出数据。

student类

public class Student {

    String name;

    double deg;

    public Student(String name, double deg) {

        this.name = name;

        this.deg = deg;

    }

}

compute

public class Compute {

    public void sort(Student [] students){

        for(int i = 0;i < students.length;i++){

            for(int j = i;j < students.length;j++){

                if(students[i].deg < students[j].deg){

                    Student temp = students[i];

                    students[i] = students[j];

                    students[j] = temp;

                }

            }

        }

    }

    public void disp(Student[] students){

        sort(students);

        for(int i = 0;i < students.length;i++){

            if(i <= students.length*0.7-1){

                System.out.println("姓名:"+students[i].name+成绩:"+students[i].deg+"  PASS");

            }else {

                System.out.println("姓名:"+students[i].name+成绩:"+students[i].deg+"  FAIL");

            }

        }

    }

}

Demo

public class Demo {

   public static void main(String[] args) {

      Student[] s = new Student[5];

        s[0] = new Student("四浪",79);

        s[1] = new Student("三根",88);

        s[2] = new Student("二狗",56);

        s[3] = new Student("一休",75);

        s[4] = new Student("零零",65);

        Compute compute = new Compute();

        compute.disp(s);

   }

}

imageimage.gif编辑

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
java基础示例
这篇文章将为大家详细讲解有关java基础之方法的示例分析
0 0
极致优化:使用二进制分段实现压缩存储|Java 刷题打卡
极致优化:使用二进制分段实现压缩存储|Java 刷题打卡
0 0
详解如何使用「动态规划」实现「通配符匹配」|Java 刷题打卡
详解如何使用「动态规划」实现「通配符匹配」|Java 刷题打卡
0 0
巧妙利用异或性质实现最优解|Java 刷题打卡
巧妙利用异或性质实现最优解|Java 刷题打卡
0 0
Java方法05——简单计算器的实现(练习巩固)
Java方法05——简单计算器的实现(练习巩固)
0 0
java实现下载器(以及创建一个URL对象)
java实现下载器(以及创建一个URL对象)
0 0
java自定义线程池实现
java自定义线程池实现
0 0
【Java数据结构及算法实战】系列010:Java队列04——链表实现的阻塞队列LinkedBlockingQueue
【Java数据结构及算法实战】系列010:Java队列04——链表实现的阻塞队列LinkedBlockingQueue
0 0
两种方式实现一个「扁平化嵌套列表迭代器」|Java 刷题打卡
两种方式实现一个「扁平化嵌套列表迭代器」|Java 刷题打卡
0 0
RSA加密解密及数字签名Java实现
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
0 0
+关注
RainstormGod
眼睛可以近视,但目光不能短浅。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
《阿里巴巴Java开发手册(详尽版)1.4.0》
立即下载
Java工程师必读手册
立即下载
Java开发者面试百宝书
立即下载