电子科技大学
实验报告
实验地点:信软楼440 实验时间:19.02.27
一、实验名称:开发平台安装与配置及Java基础
二、实验学时:4学时
三、实验目的:
熟悉开发平台,熟悉Java的基本知识,Java的数组,类,接口等。
四、实验原理:
JDK的安装和配置
Eclipse的安装和配置
Java基础
五、实验内容:
1.完成JDK的安装和配置
2.完成Eclipse的安装和配置
3.编写程序
(1)编写Java程序,应用for循环打印菱形。
(2)编写Java程序,使用while循环语句计算1+1/2!+1/3!...1/20!之和。
(3)使用正则表达式来判断字符串text是否为合法的手机号。
(4)使用字符串生成器,将字符串str追加1~10这10个数字。
(5)编写Java程序,将二维数组中的行列互调显示出来。
(6)编写一个类,定义一个修饰权限为private的成员变量,并定义两个成员方法,一个成员方法实现为此成员变量赋值,另一个成员方法获取这个成员变量的值,保证其他类继承该类时能获取该类的成员变量的值。
(7)创建一个父类和子类,分别创建构造方法,然后向父类和子类添加成员变量和方法,并总结构建子类对象时的顺序。
六、实验器材(设备、元器件):
PC,软件JDK包和Eclipse的安装和配置
七、实验步骤:
1、完成编程环境的搭建和配置。
2、审题,思考编程思路。
3、建立JA V A工程并编写程序。
4、调试程序,直至得到最后结果。
八、实验结果与分析(含重要数据结果分析或核心代码流程分析)
(1)、实验结果及分析如下所示:
final int Max_number = 7; //应为奇数
for(int i = 0; i < Max_number; i++) {
if(i < (Max_number - 1)/2) {
for(int j = 0; j < (Max_number - 1)/2 - i + 1; j++) {
System.out.print(' ');
}
for(int j = 0; j < 2*i + 1; j++) {
System.out.print('*');
}
System.out.println();
}
else {
for(int j = (Max_number - 1)/2; j <= i; j++) {
System.out.print(' ');
}
for(int j = 0; j < 2*(Max_number - i) - 1; j++) {
System.out.print('*');
}
System.out.println();
}
}
通过对程序中Max_number值的设置,可以设置显示菱形的对角线长度,如设置为7,所画菱形的对角线长度如下图所示也为7。
(2)、实验结果及分析如下所示:
代码如下所示:
int Num = 20;
double temp = 1;
double Sum = 0;
while(Num > 0) {
for (int i = Num; i > 0; i--) {
temp = i*temp;
}
Sum = Sum + (1/temp);
temp = 1;
Num--;
}
System.out.println(Sum);
其中Sum为累加和,while循环负责20个加数的累加循环,for循环负责求取每一个加数的分母。运行结果如下图所示:
(3)、实验结果及分析如下所示:
String PhoneStandard = "^((13[0-9])|(15[0-9])|(18[0-9])|(17[0-8])|(147))\\d{8}$";
重要需要定义一个合法的手机号码的判断标准。即合法手机号码应该为11位,其中前三位应该为:13*、15*、18*、17*或147。运行结果如下图所示:首先输入一个不合法的手机号码152801795820,判断结果为:
然后再输入一个合法的手机号码152********,判断结果为:
(4)、实验结果及分析如下所示:
for(int i = 0; i < 11; i++){
Str.append(i);
}
使用StringBuilder类中的append函数可以很简单的做到这一点。
(5)、实验结果及分析如下所示:
final int Array_A[][] = {{1,1,1,1,1},{2,2,2,2,2},{3,3,3,3,3},{4,4,4,4,4},{5,5,5,5,5}};
int Array_B[][] = new int[5][5];
System.out.println("原矩阵:");
for(int i = 0; i < 5; i++){
for(int j = 0; j < 5; j++){
System.out.print(Array_A[i][j]);
Array_B[j][i] = Array_A[i][j];
}
System.out.println();
}
System.out.println("行列调换后矩阵为:");
for(int i = 0; i < 5; i++){
for(int j = 0; j < 5; j++){
System.out.print(Array_B[i][j]);
}
System.out.println();
}
代码如上所示,在逐个打印原矩阵的元素时同时进行矩阵的行列调换。
(6)、实验结果及分析如下所示:
public class OneData {
private int Data;
public OneData() {}
public OneData(int data){
Data = data;
}
public int getData() {
return Data;
}
public void setData(int data) {
Data = data;
}
}
定义一个名为OneData的类,其中getData()函数可以读取private变量Data 的值,setData()函数可以设置Data的值。
实例化代码如下所示:
OneData data_1 = new OneData(3);
System.out.println("获取数据为:" + data_1.getData());
data_1.setData(9);
System.out.println("获取改变过后的数据为:" + data_1.getData());
运行结果如下图所示:
(7)、实验结果及分析如下所示:
在(6)的基础上新建一个TwoData的类,由OneData类继承而来。
public class TwoData extends OneData {
private int TData;
public TwoData(int data) {
TData = data;
System.out.println("调用子类构造函数。变量值为:" + TData);
}
}
其中TData为子类中的私有变量。
TwoData data_2 = new TwoData(5);
System.out.println("获取数据为:" + data_2.getData());
实例化该类并运行可得结果:
可见,子类在进行实例化时,调用了子类自己的构造函数。
九、总结及心得体会:
借助课程PPT,在编写了本次实验的7个程序后,总算是对Java的一些基本性东西有了一个大概的了解。也得益于之前学过C++这门语言,我想Java的入门应该是一个很愉快的过程。非常期待接下来的Android实践。
十、对本实验过程及方法、手段的改进建议:
前两次课为了照顾我们这些没有Java基础的同学一直在讲Java编程的基础部分。虽然由于时间紧张的关系,这个过程非常的快速,但是还是很感谢老师的照顾。而且PPT中的代码都是事先自己打出来并且验证过的,非常有心。希望在后面的Android实践过程中,老师能够讲的慢一些。如果能够带着我们一步步的调试就更加好了。
报告评分:
指导教师签字: