实验二 面向对象(一)(预习报告)

面向对象——Java实验报告

实验二: Java面向对象(二)

实验二 面向对象(一)(预习报告)

<center> 
<strong>姓名:</strong> 
<u>XXX</u> 
&emsp;&emsp;
<strong>班级:</strong> 
<u>XXXXX</u> 
&emsp;&emsp;
<strong>学号:</strong>
<u>XXXXXXXXXXXX</u></center>

一、实验目标

(1)能够根据需要解决的实际问题,利用Java语言实现类的定义;
(2)能够熟练运用构造方法来实例化对象以及调用对象的方法。

二、实验环境

IntelliJ IDEA Community Edition 2021.1 x64 + openjdk-16.0.1

三、实验准备

  • 定义一个计算机类,要求该类中至少包含3个私有的属性(为每个属性定义设置和获取方法),该类中至少包含两个构造方法(一个无参,一个有参),以及包含2-4个方法来描述计算机对象的行为(其中一个方法要能打印输出计算机对象的所有属性值)。

问题分析: 题目主要的几个信息点,计算机类三个私有属性两个构造方法类的描述方法(打印输出计算机对象的所有属性值)
因此可以构造以下主要结构:

class Computer{
 /* 三个私有属性
    private cpu;//cpu型号
    private Price;//计算机价格
    private Brand;//计算机品牌
    */
     /*每个属性的get方法和set方法;
    get属性(){return 属性;}
    set属性(新属性值){this.属性=新属性值;}
    */
     /*
    属性描述方法,例如
    public static void UseCpu() {System.out.println("Cpu --/50%");}
    */
     /*
    打印输出方法
        public static void infoComupter() {
        定义Computer各属性的信息;
        逐项打印Computer各属性信息;
    */}
  • 定义一个类,该类中包含以下几个方法(静态):
    (1) 实现字符串数组的逆序排序,输出结果为字符串数组;
    (2) 求两个整形数组的交集;
    (3) 求两个浮点型数组的并集;

问题分析: (1) 字符串数组逆序排序,可以通过双变量分别从进行首尾向中间逐次置换进行,则其可能的结构为:

StringReverse() {
  int i=0,j = (arry1.length)-1;
	 int mid= (arry1.length-1)/2;
  while(i<mid){
      char t = arry1[i];
      arry1[i++]=arry1[j];
      arry1[j--]=t;}
}

(2) 两个整型数组的交集,判断是否是两个数组共有的元素,当两个数组共有时存入新数组中。则函数的结构有:

IntIntersection() {
    定义数组nums1,nums2;
    int[]ans=new int[40];
    int k=0;
    for (int i = 0; i < num1.length; i++) {
        for (int j = 0;j< num2.length; j++) {
            if (num1[i] == num2[j]) {ans[k++]=num1[i];}
        }
    }
}

(3) 两个浮点数组的并集,思路与(2)相反,当非两个数组共有的时候存入新数组。则函数结构有:


public static void FloatUnion() {
    定义数组nums1,nums2;
    double[] ans = new double[50];
    int f = 0;
    for (int i = 0; i <nums1.length; i++) {
        boolean flag=true;
        for (int j = 0; j<nums2.length; j++) {
            if (nums1[i] == nums2[j]) {
                flag= false;//将数组2作为参考数组,两个数组共有时不进行操作
                break; 
            }
        }
        if (flag){ ans[f++]=nums1[i];}
    }
    for (int i =0;i<nums2.length;i++){
        ans[f++]=nums2[i];}//然后将参考数组存入结果数组
}
  • 定义一个表示学生信息的类Student,要求如下:

​ (1)类Student的成员变量:
sNO表示学号;sName表示姓名;sSex表示性别;sAge表示年龄;sJava:表示Java课程成绩。

​ (2)类Student带参数的构造方法:
​ 在构造方法中通过形参完成对成员变量的赋值操作。

​ (3)类Student的方法成员:
getNo():获得学号;
getName():获得姓名;
getSex():获得性别;
getAge():获得年龄;
getJava():获得Java 课程成绩
​ 根据类Student的定义,创建五个该类的对象,输出每个学生的信息,计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。

问题分析: (1)(2)(3)按照题目需求逐项构造结构即可,如下(与第一题目要求类似)

//(1)类Student的成员变量:
class Student{
    private String sNO;//学号
    private String sName;//姓名
    private String sSex;//性别
    private String sAge;//年龄
    private double sJava;//Java课程成绩
//(2)类Student带参数的构造方法:在构造方法中通过形参完成对成员变量的赋值操作。
 public Student(String sNO, String sName, String sSex, String sAge, double sJava) {
        this.sNO = sNO;
        this.sName = sName;
        this.sSex = sSex;
        this.sAge = sAge;
        this.sJava = sJava;}
   //(3)类Student的方法成员:
 public String getNo() {return sNO;}//	getNo():获得学号;
    public String getsName() {return sName;}//	getName():获得姓名;
    public String getsSex() {return sSex;}//	getSex():获得性别;
    public double getsJava() {return sJava;}//	getAge():获得年龄;
    public String getsAge() {return sAge;}//	getJava():获得Java 课程成绩
   }

在题目主要部分的计算可以使用Arrylist存储将无序信息变得可以迭代使方便统计输出等操作。

public class experimentThree {
 public static void main(String[] args) {
        //创建五个该类的对象
        List<Student> Stu=new ArrayList<>();
        //存储学生对象
        double sum=0.0;
        double max = 0,min= wang.getsJava();
        for (var i :Stu){
            //输出学生对象
            sum +=i.getsJava();
            if (max<i.getsJava()) max=i.getsJava();//最大值
            else if (min> i.getsJava()) min = i.getsJava();}//最小值
        //输出这五个学生Java语言成绩的平均值sum/5,输出他们Java语言成绩的最大值max和最小值min。
    }}

四、预习遇到的问题

  在本次实验的预习过程中,由于基础知识不太扎实,导致多次在一些基本问题上栽跟头,比如私有变量的定义与赋值方面。在部分题目的理解上存在较大的误解,比如第一题字符逆序最开始的解决思路是直接使用循环从尾部开始逆向输出,这种方法相对取巧,是不可取的方案,经过老师的指导与讲解后对问题有了较为深入的理解才选用的现有方案。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值