面向对象——Java实验报告
实验二:
Java面向对象(二)
实验二 面向对象(一)
<center>
<strong>姓名:</strong>
<u>XXX</u>
  
<strong>班级:</strong>
<u>XXXXX</u>
  
<strong>学号:</strong>
<u>XXXXXXXXXXXX</u></center>
一、实验目的
在集成开发环境下,运用Java语言的面向对象的特性来实现类的封装、构造方法的定义以及对象的实例化和对象方法的调用。
二、实验目标
(1)能够根据需要解决的实际问题,利用Java语言实现类的定义;
(2)能够熟练运用构造方法来实例化对象以及调用对象的方法。
三、实验内容
3.1 实验环境
IntelliJ IDEA Community Edition 2021.1 x64 + openjdk-16.0.1
3.2 实验内容
1.定义一个计算机类,要求该类中至少包含3个私有的属性(为每个属性定义设置和获取方法),该类中至少包含两个构造方法(一个无参,一个有参),以及包含2-4个方法来描述计算机对象的行为(其中一个方法要能打印输出计算机对象的所有属性值)。
2.定义一个类,该类中包含以下几个方法(静态):
(1) 实现两个字符串数组的逆序排序,输出结果为字符串数组;
(2) 求两个整形数组的交集;
(3) 求两个浮点型数组的并集;
3.定义一个表示学生信息的类Student,要求如下:
(1)类Student的成员变量:
sNO
表示学号;sName
表示姓名;sSex
表示性别;sAge
表示年龄;sJava
:表示Java课程成绩。
(2)类Student带参数的构造方法:
在构造方法中通过形参完成对成员变量的赋值操作。
(3)类Student的方法成员:
getNo()
:获得学号;
getName()
:获得姓名;
getSex()
:获得性别;
getAge()
:获得年龄;
getJava()
:获得Java 课程成绩
根据类Student的定义,创建五个该类的对象,输出每个学生的信息,计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。
四、实验过程分析
4.1 实验步骤
1.定义一个计算机类,要求该类中至少包含3个私有的属性(为每个属性定义设置和获取方法),该类中至少包含两个构造方法(一个无参,一个有参),以及包含2-4个方法来描述计算机对象的行为(其中一个方法要能打印输出计算机对象的所有属性值)。
实验代码
class computer {
private String cpu;
private String price;
private String brand;
public computer(String cpu, String price, String brand) {
this.cpu = cpu;
this.price = price;
this.brand = brand;}
public String getCpu() {return cpu;}
public String getPrice() {return price;}
public String getBrand() {return brand;}
public void setCpu(String cpu) {this.cpu = cpu;}
public void setPrice(String price) {this.price = price;}
public void setBrand(String brand) {this.brand = brand;}
public static void UseCpu() {System.out.println("Cpu --/50%");}
public static void compPrice() {System.out.println("价格同比 --/--");}
public static void infoBrand(){System.out.println("本机出产于|--|");}
public static void infoComupter() {
computer C = new computer("AMD", "10K", "lenvon");
System.out.println("Cpu:" + C.cpu);
System.out.println("Price:" + C.price);
System.out.println("品牌:" + C.brand);}
}
public class experimentOne {
public static void main(String[] args) {computer.infoComupter();}
}
结果输出
C:\Users\a\.jdks\openjdk-16.0.1\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\lib\idea_rt.jar=64564:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\a\Documents\Tencent Files\lession\out\production\lession" experimentOne
Cpu:AMD
Price:10K
品牌:lenvon
Process finished with exit code 0
2.定义一个类,该类中包含以下几个方法(静态):
(1) 实现字符串数组的逆序排序,输出结果为字符串数组;
(2) 求两个整形数组的交集;
(3) 求两个浮点型数组的并集;
实验代码
public class experimentTwo {
public static void main(String[] args) {
Solution.StringReverse();
Solution.IntIntersection();
Solution.FloatUnion();
}
}
class Solution {
public static void StringReverse() {
String originalString="heshangaishutou,shutouyongpiaorou";
char[] arry1 = originalString.toCharArray();
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;
}
for (int k =0;k< arry1.length;k++){
if (arry1[i]==0) break;
System.out.print(" "+arry1[k]);
}
System.out.println();
return;
}
public static void IntIntersection() {
int[] num1 = {4,5,6,7,8,9};
int[] num2= {1, 2, 3, 4, 5, 6};
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];}
}
}
for (int i =0;i< ans.length;i++){
if (ans[i]==0) break;
System.out.print(" "+ans[i]);
}
System.out.println();
return;
}
public static void FloatUnion() {
double[] nums1 = {12.5,1.34,1.24,1.36};
double[] nums2 = {1.33,1.24,1.36,1.54};
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;
break; }
}
if (flag){ ans[f++]=nums1[i];}
}
for (int i =0;i<nums2.length;i++){
ans[f++]=nums2[i];}
for (int i =0;i< ans.length;i++){
if (ans[i]==0) break;
System.out.print(" "+ans[i]);}
System.out.println();
return;
}
}
结果输出
C:\Users\a\.jdks\openjdk-16.0.1\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\lib\idea_rt.jar=50291:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\a\Documents\Tencent Files\lession\out\production\lession" experimentTwo
u o r o a i p g n o y u o t u h s , u o t u h s i a g n a h s e h
4 5 6
12.5 1.34 1.33 1.24 1.36 1.54
Process finished with exit code 0
3.定义一个表示学生信息的类Student,要求如下:
(1)类Student的成员变量:
sNO
表示学号;sName
表示姓名;sSex
表示性别;sAge
表示年龄;sJava
:表示Java课程成绩。
(2)类Student带参数的构造方法:
在构造方法中通过形参完成对成员变量的赋值操作。
(3)类Student的方法成员:
getNo()
:获得学号;
getName()
:获得姓名;
getSex()
:获得性别;
getAge()
:获得年龄;
getJava()
:获得Java 课程成绩
根据类Student的定义,创建五个该类的对象,输出每个学生的信息,计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。
实验代码
import java.util.ArrayList;
import java.util.List;
class Student {
private String sNO;
private String sName;
private String sSex;
private String sAge;
private double sJava;
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;}
public String getNo() {return sNO;}
public String getsName() {return sName;}
public String getsSex() {return sSex;}
public double getsJava() {return sJava;}
public String getsAge() {return sAge;}
}
public class experimentThree {
public static void main(String[] args) {
Student wang=new Student("20190701","王鹏","♂","17",15.7);
Student li = new Student("20190702","李沁","♀","19",17.9);
Student zhao =new Student("20190703","赵柯","♀","19",19.34);
Student han =new Student("20190704","韩玉","♂","18",17.44);
Student xi =new Student("20190703","习语","♀","17",19.88);
List<Student> Stu=new ArrayList<>();
Stu.add(wang);
Stu.add(li);
Stu.add(zhao);
Stu.add(han);
Stu.add(xi);
double sum=0.0;
double max = 0,min= wang.getsJava();
for (var i :Stu){
System.out.println("学号:"+i.getNo()+" 姓名:"+i.getsName()+" 性别:"+i.getsSex()+" 年龄:"+i.getsAge()+" java成绩:"+i.getsJava());
sum +=i.getsJava();
if (max<i.getsJava())
max=i.getsJava();
else if (min> i.getsJava())
min = i.getsJava();}
System.out.println("平均成绩:"+sum/5+" 最高成绩:"+max+" 最低成绩"+min);
}
}
结果输出
C:\Users\a\.jdks\openjdk-16.0.1\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\lib\idea_rt.jar=53634:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\a\Documents\Tencent Files\lession\out\production\lession" experimentThree
学号:20190701 姓名:王鹏 性别:♂ 年龄:17 java成绩:15.7
学号:20190702 姓名:李沁 性别:♀ 年龄:19 java成绩:17.9
学号:20190703 姓名:赵柯 性别:♀ 年龄:19 java成绩:19.34
学号:20190704 姓名:韩玉 性别:♂ 年龄:18 java成绩:17.44
学号:20190703 姓名:习语 性别:♀ 年龄:17 java成绩:19.88
平均成绩:18.052 最高成绩:19.88 最低成绩15.7
Process finished with exit code 0
4.2 错误分析
错误情况
在第二题输出时,输出结果与预期不符且相差较大。如下图所示:
<img src=“https://img-blog.csdnimg.cn/717b7ea6fbc44747985b9142a583d54a.png” alt="" />
预期结果如下:
<img src=“https://img-blog.csdnimg.cn/b26636f472034b63b8ed82c088d9b5e3.png” alt="" />
解决方案
经过反复查找与调试,发现罪魁祸首是因为在输出语句中的
' '
导致的输出失常; 因此调整代码的输出语句,将所有的' '
改换为" "
五、个人总结
在本次实验中我顺利的完成了实验任务,并在实验的过程中经过调试找出了问题所在。通过本次实验,经过问题思考与问题解决的规划,对实验的完成有较大的帮助,同时在实验的过程中也加深了对于已有知识点的理解与运用,虽不能融会贯通但也不至于纸上谈兵,这也算本次实验中较大的收获之一。在本次实验的过程中当然也离不开同学的相互交流,当然,对实验题目的理解出现偏差时也需要及时向老师寻求帮助,以免因为错误的理解方向,导致产生的错误结果但是自己不知道的情况。在部分题目中通过借鉴网上同类题目的解题思路对理解题目与解决题目也同样具有极大的帮助,积极的汲取知识将会对学习产生很大影响,不同的正确解题思路也会碰撞出不一样的火花。