<center> <strong>姓名:</strong> <u>XXX</u>    <strong>班级:</strong> <u>XXXXX</u>    <strong>学号:</strong> <u>XXXXXXXXXXXX</u></center>
(1)能够根据需要解决的实际问题,利用Java语言实现类的定义;
(2)能够熟练运用构造方法来实例化对象以及调用对象的方法。
IntelliJ IDEA Community Edition 2021.1 x64 + openjdk-16.0.1
问题分析: 题目主要的几个信息点,
计算机类
、三个私有属性
、两个构造方法
、类的描述方法(打印输出计算机对象的所有属性值)
因此可以构造以下主要结构: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) 字符串数组逆序排序,可以通过双变量分别从进行首尾向中间逐次置换进行,则其可能的结构为:
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];}//然后将参考数组存入结果数组 }
(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。 }}
在本次实验的预习过程中,由于基础知识不太扎实,导致多次在一些基本问题上栽跟头,比如私有变量的定义与赋值方面。在部分题目的理解上存在较大的误解,比如第一题字符逆序最开始的解决思路是直接使用循环从尾部开始逆向输出,这种方法相对取巧,是不可取的方案,经过老师的指导与讲解后对问题有了较为深入的理解才选用的现有方案。