1、精java实验练习报告答案面向对象程序设计(Java)实验报告姓名_学号_实验二 Java基本编程能力一、实验目的与要求(1)掌握Java常用编程工具的使用;(2)掌握Java语言的基本语法,包括:标识符、简单类型、表达式及运算、选择结构、循环结构、数组、输入输出。二、实验原理标识符:Java语言使用的是Unicode字符集,使用2个字节表示一个符号,总共可描述65536个不同的符号,基本上可以描述世界上所有国家的文字。因此,除可以使用通常的方式来命名标识符之外,也可以使用中文、日文、朝鲜文作为标识符。但是,对于程序员来说:最好还是使用遵从一般规范。在Java语言中规定了各基本类型的数据所占的
2、固定字节数。分别如下:在Java中int 类型的占4个字节,char类型的占2个字节,long-8, float-4;double-8与C语言不同的是,Java语言中增加了boolean类型,即逻辑类型(布尔类型),其变量只有2个常量值,绝对不能与C中的非0就是真、0就是假混淆。运算规则、选择结构、循环结构与C语言基本一致,不再赘述了。数组属于特殊的类,每个数组都是一个对象。对象都是指针。一维数组的声明、定义、赋值(创建数组),访问(包括使用foreach方式,Java中新增加的遍历方式),数组的元素个数三、预习与准备掌握基本的概念及原理,明确实验任务和目的,准备实验的源代码。四、实验内容7、
3、9、10、25、26、30、38、40、(41可搜索、考虑)五、实验过程7输入三个数,求三个数中的最大值:源代码如下:package com.demo;import java.util.Scanner;publicclass Demo01 publicstaticvoid main(String args) Scanner q = new Scanner(System.in); / 输入三个数到数组 int a = newint3; System.out.println(请输入三个数:); for (int i = 0; i 3; i+) ai = q.nextInt(); / 对输入的数求最
4、大值 int max = a0; for (int i = 0; i a.length; i+) if (max ai) max = ai; System.out.println(最大值为 + max); 运行结果截图:9判断输入的数时正数、负数还是零,例如输入-100,输出“负数”,输入100,输出“正数”,输入0,输出“零”:源程序如下:package com.demo;import java.util.Scanner;publicclass Demo01 publicstaticvoid main(String args) Scanner scanner = new Scanner(Sy
5、stem.in); System.out.println(请输入您要判断的数;); int input = scanner.nextInt(); if (input 0) System.out.println(负数); elseif (input = 0) System.out.println(这个数是 0); else System.out.println(正数 ); 运行结果截图如下:10根据学生成绩(成绩在0-100之间)输出等级,分别用if和switch实现。成绩和等级的对应关系如下:60以下:不及格6079:及格8090:良好90100:优秀源程序如下:package com.dem
6、o;import java.util.Scanner;publicclass Demo01 publicstaticvoid main(String args) System.out.print(请输入学生的成绩:); Scanner score = new Scanner(System.in); int scores = score.nextInt(); int a = scores / 10; switch (a) case 7: System.out.println(及格); break; case 8: System.out.println(良好); break; case 9: Sy
7、stem.out.println(优秀); break; default: System.out.println(不及格); 运行结果截图如下:38 从键盘输入10个数字,求这10个数字的和、平均值、最大值和最小值。原程序如下:package com.demo;import java.util.*;publicclass Demo01 publicstaticvoid main(String args) Scanner s = new Scanner(System.in); int b = newint10; System.out.print(Please input 10个 numbers:
8、); for (int i = 0; i b.length; i+) bi = s.nextInt(); int max = b0; for (int i = 0; i max) max = bi; System.out.println(最大值: + max); int min = b0; for (int i = 0; i b.length; i+) if (bi min) min = bi; System.out.println(最小值: + min); int sum = 0; for (int i = 0; i b.length; i+) sum += bi; System.out.p
9、rintln(和为: + sum); double level = 0.0; level = sum / 10.0; System.out.println(平均值: + level); 运行结果截图如下:30 100个人吃100个馒头,1个大人吃3个,3个小孩吃一个。编写程序计算有几个大人几个小孩,如果满足条件的情况有多个,则每个结果都输出。package com.demo;publicclass Demo01 publicstaticvoid main(String args) for (int i = 0; i 100; i+) for (int j = 100 - i; j 300; j
10、+) if (i * 3 + j / 3) = 100) System.out.println(大人: + i + 个,小孩: + j + 个); break; 25 。据推测大于4的偶数都可以写成两个质数(素数)的和。编写程序进行验证100以内的偶数是否满足,如果有写出表达式,如果没有则输出“没有”。如果能够写成的式子多于1个,则写出两个数字差比较大的那对。例如:42 = 5 + 37 = 11 + 31 = 13 + 29 = 19 + 23 输出42 = 5 + 37即可。因为37-5最大。package com.demo;publicclass Demo01 publicstaticv
11、oid main(String args) int m, a, b, i, j, x = 0, y = 0; for (m = 6; m = 100; m = m + 2) for (a = 2, b = m - a; a = b; a+) for (i = 2; i (a / 2) x = 1; b = m - a; for (j = 2; j (b / 2) y = 1; if (x * y = 1) System.out.println(m + = + a + + + b); x = 0; y = 0; break; 26在上台阶的时候,每次可以上一个,或者上两个,给定一个数字表示一共有
12、多少个台阶,编写程序计算有多少种可能的走法。源程序如下所示:package com.demo;publicclass Demo01 publicstaticvoid main(String args) int n = 10; for (int i = 0; i n; i+) / 控制走一级台阶的人数 for (int j = 0; j = n / 2; j+) / 控制走二级台阶的人数 if (i * 1 + j * 2 = n) System.out.println(走一介台阶的有; + i + 走两阶台阶的有: + j); 程序运行结果截图如下:40 编写方法使用冒泡排序对数组进行排序,参
13、数要是要排序的数组。源程序如下所示:package com.demo;publicclass Demo01 publicstaticvoid main(String args) int a = 32, 31, 64, 142, 332, 13, 144 ; Demo01.bubbleSort(a); for (int i = 0; i a.length; i+) System.out.print(ai + ); publicstaticvoid bubbleSort(int a) for (int i = 1; i a.length; i+) for (int j = 1; j aj + 1)
14、 int temp = aj; aj = aj + 1; aj + 1 = temp; 程序运行结果截图如下:41 用程序实现24点游戏,让用户输入4个数字(1-10),程序给出如何计算得到24。例如输入1、2、3、4,程序要输出1*2*3*4=24,例如输入7、8、9、10,输出8*9/(10-7)=24。六、实验总结与体会:实验三 Java面向对象基础一、实验目的与要求(1) 掌握面向对象的基本概念,掌握类定义的方法、对象的创建、访问;(2) 掌握几个关键字的特征及用法:static、this;(3) 了解类的权限、成员的权限;(4) 字符串与整型、实型的转换;(5) String、Str
15、ingBuffer、StringBuilder的差别及用法;(6) 几个常用工具类的使用,主要有Math、Random、date、Calendar等。二、实验原理三、预习与准备 掌握基本的概念及原理,明确实验任务和目的,准备实验的源代码。四、实验内容56789(综合组织成一个程序)、19、21、35、36、38五、实验过程:5、定义一个表示学生的类,要求如下:1)类名是Student。2)该类包含3个属性:sid(表示学号)、sname(表示姓名)、sage(表示年龄)。3)为3个属性提供set和get方法。4)编写一个无参数的构造方法,把年龄设置为18。5)编写有一个参数的构造方法,参数为学
16、生学号,把年龄设置为18。6)编写有两个参数的构造方法,第一个参数表示学号,第二个参数表示姓名,把年龄设置为18。7)编写有3个参数的构造方法,第一个参数表示学号,第二个参数表示姓名,最后一个参数表示年龄。8)编写一个toSting方法,把学生信息转换成一个字符串,字符串的格式为“学号姓名年龄”。6、编写一个测试类Test,在Test中编写main方法,main方法中的主要代码如下:1)调用无参数的构造方法创建Student对象s1;2)通过setSid把学号设置为“2013030101”。3)通过setSname把姓名设置为“杨光”。4)通过setSage把年龄设置为19。5)调用s1的to
17、String方法把得到的结果赋值给String类型的info变量。6)输出info的值。7、编写一个测试类Test,在Test中编写main方法,main方法中的主要代码如下:1)调用有一个参数的构造方法创建Student对象s2,学号为“2013030102”。2)通过setSname把姓名设置为“李玲”。3)通过setSage把年龄设置为20。4)调用s2的toString方法把得到的结果赋值给String类型的info变量。5)输出info的值。8、编写一个测试类Test,在Test中编写main方法,main方法中的主要代码如下:1)调用有两个参数的构造方法创建Student对象s3,
18、学号为“2013030103”,姓名为“王宾”。2)调用s3的toString方法把得到的结果赋值给String类型的info变量。3)输出info的值。9、编写一个测试类Test,在Test中编写main方法,main方法中的主要代码如下:1)调用有3个参数的构造方法创建Student对象s4,学号为“2013030104”,姓名为“杨路”,年龄为18。2)调用s4的toString方法把得到的结果赋值给String类型的info变量。3)输出info的值。源代码如下:package maileku7;public class Student String sid; String sname
19、; int sage; /构造方法 public Student() super(); sage=18; public Student(String sid) super(); this.sid = sid; sage=18; public Student(String sid, String sname) super(); this.sid = sid; this.sname = sname; sage=18; public Student(String sid, String sname, int sage) super(); this.sid = sid; this.sname = sn
20、ame; this.sage = sage; /toSting方法 public String toString() return Student sid- + sid + , sname- + sname + , sage- + sage + ; /get/set方法 public String getSid() return sid; public void setSid(String sid) this.sid = sid; public String getSname() return sname; public void setSname(String sname) this.sna
21、me = sname; public int getSage() return sage; public void setSage(int sage) this.sage = sage; package maileku7;public class TestStudent public static void main(String args) /调用无参数构造方法 Student s1=new Student(); s1.setSid(2013030101); s1.setSname(杨光); s1.setSage(19); String info=s1.toString(); System.
22、out.println(info); /调用一个参数的构造方法 Student s2=new Student(2013030102); s2.setSname(李玲); s2.setSage(20); String info1=s2.toString(); System.out.println(info1); /调用两个参数的构造方法 Student s3=new Student(2013030103,王宾); String info2=s3.toString(); System.out.println(info2); /调用三个参数的构造方法 Student s4=new Student(2
23、013030104,杨路,18); String info3=s4.toString(); System.out.println(info3); 运行结果截图如下:19、编写一个方法对学生数组进行排序,方法参数是学生数组,学生使用Student类表示,包括姓名、学号和成绩。要求按照成绩高低进行排序。源程序如下:public class Student public static void main(String args) String sid; String sname; int score; Scanner Score=new Scanner(System.in); int student
24、=new int10; System.out.println(亲输入学生成绩:!); for(int i=0;istudent.length;i+) studenti=Score.nextInt(); System.out.println(排序后的成绩为:); Arrays.sort(student); for(int i=0;istudent.length;i+) System.out.print(studenti+ ); 运行结果如下截图:21、编写方法实现字符串压缩的功能,连续的n个字符x表示为xn,例如aaaa表示为a4,如果只出现一次直接输出即可。例如输入aaaaaaaabbbccd
25、ddeeebbba,输出a7b3c2d3e3b3a。package com.demo;publicclass Demo01 publicstaticvoid main(String args) String s = comp(aaaaaaaabbbccdddeeebbba); System.out.println(s); publicstatic String comp(String str) int i = 1; StringBuilder buf = new StringBuilder(); int count = 1; char ch = str.charAt(0); for (;) c
26、har c = i = str.length() ? 10 : str.charAt(i); if (c = ch) count+; else if (count = 1) buf.append(ch); else buf.append(ch).append(count); count = 1; ch = c; i+; if (i = str.length() + 1) break; return buf.toString(); 六、实验总结与体会:实验四深入面向对象一、实验目的与要求(1) 深刻理解面向对象的三大特征;(2) 熟练掌握关键super、final的含义及用法;(3) 理解什么是
27、抽象类、抽象方法,以及两者间的关系;(4) 深刻理解接口的概念、作用,以及与抽象类的差别;(5) 类类型的转换(向上和向下转换),运算符 instanceof使用;(6) 深刻理解、掌握动态性;(7) Object、Class这2个系统类的常用方法,了解反射的概念及目的。(8) 初步了解对象间进行消息传递的方式(两种一是乙类对象作为甲类的成员,对象作为方法的参数)。二、实验原理 (1)面向对象三大特征:面向对象的3大特征是封装、继承、多态。封装:在定义一个类时都需要认真思考,类是现实世界中事物的属性和对这些属性进行操作的方法的集合体。因此一个类应该包括数据成员和函数成员,仅仅只含一种成员的类很少(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1