精java实验练习报告答案.docx

上传人:b****6 文档编号:5258817 上传时间:2022-12-14 格式:DOCX 页数:41 大小:121.73KB
下载 相关 举报
精java实验练习报告答案.docx_第1页
第1页 / 共41页
精java实验练习报告答案.docx_第2页
第2页 / 共41页
精java实验练习报告答案.docx_第3页
第3页 / 共41页
精java实验练习报告答案.docx_第4页
第4页 / 共41页
精java实验练习报告答案.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

精java实验练习报告答案.docx

《精java实验练习报告答案.docx》由会员分享,可在线阅读,更多相关《精java实验练习报告答案.docx(41页珍藏版)》请在冰豆网上搜索。

精java实验练习报告答案.docx

精java实验练习报告答案

面向对象程序设计(Java)

实验报告

 

姓名________

学号_

实验二Java基本编程能力

一、实验目的与要求

(1)掌握Java常用编程工具的使用;

(2)掌握Java语言的基本语法,包括:

标识符、简单类型、表达式及运算、选择结构、循环结构、数组、输入输出。

二、实验原理

标识符:

Java语言使用的是Unicode字符集,使用2个字节表示一个符号,总共可描述65536个不同的符号,基本上可以描述世界上所有国家的文字。

因此,除可以使用通常的方式来命名标识符之外,也可以使用中文、日文、朝鲜文作为标识符。

但是,对于程序员来说:

最好还是使用遵从一般规范。

在Java语言中规定了各基本类型的数据所占的固定字节数。

分别如下:

在Java中int类型的占4个字节,char类型的占2个字节,long---8,float---4;double-----8

与C语言不同的是,Java语言中增加了boolean类型,即逻辑类型(布尔类型),其变量只有2个常量值,绝对不能与C中的非0就是真、0就是假混淆。

运算规则、选择结构、循环结构与C语言基本一致,不再赘述了。

数组属于特殊的类,每个数组都是一个对象。

对象都是指针。

一维数组的声明、定义、赋值(创建数组),访问(包括使用foreach方式,Java中新增加的遍历方式),数组的元素个数

三、预习与准备

掌握基本的概念及原理,明确实验任务和目的,准备实验的源代码。

四、实验内容

7、9、10、25、26、30、38、40、(41可搜索、考虑)

五、实验过程

7.输入三个数,求三个数中的最大值:

源代码如下:

packagecom.demo;

importjava.util.Scanner;

publicclassDemo01{

publicstaticvoidmain(String[]args){

Scannerq=newScanner(System.in);

//输入三个数到数组

int[]a=newint[3];

System.out.println("请输入三个数:

");

for(inti=0;i<3;i++){

a[i]=q.nextInt();

}

//对输入的数求最大值

intmax=a[0];

for(inti=0;i

if(max

max=a[i];

}

}

System.out.println("最大值为"+max);

}

}

运行结果截图:

9.判断输入的数时正数、负数还是零,例如输入-100,输出“负数”,输入100,输出“正数”,输入0,输出“零”:

源程序如下:

packagecom.demo;

importjava.util.Scanner;

publicclassDemo01{

publicstaticvoidmain(String[]args){

Scannerscanner=newScanner(System.in);

System.out.println("请输入您要判断的数;");

intinput=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以下:

不及格

60~79:

及格

80~90:

良好

90~100:

优秀

源程序如下:

packagecom.demo;

importjava.util.Scanner;

publicclassDemo01{

publicstaticvoidmain(String[]args){

System.out.print("请输入学生的成绩:

");

Scannerscore=newScanner(System.in);

intscores=score.nextInt();

inta=scores/10;

switch(a){

case7:

System.out.println("及格");

break;

case8:

System.out.println("良好");

break;

case9:

System.out.println("优秀");

break;

default:

System.out.println("不及格");

}

}

}

运行结果截图如下:

38从键盘输入10个数字,求这10个数字的和、平均值、最大值和最小值。

原程序如下:

packagecom.demo;

importjava.util.*;

publicclassDemo01{

publicstaticvoidmain(String[]args){

Scanners=newScanner(System.in);

int[]b=newint[10];

System.out.print("Pleaseinput10个numbers:

");

for(inti=0;i

b[i]=s.nextInt();

}

intmax=b[0];

for(inti=0;i

if(b[i]>max){

max=b[i];

}

}

System.out.println("最大值:

"+max);

intmin=b[0];

for(inti=0;i

if(b[i]

min=b[i];

}

}

System.out.println("最小值:

"+min);

intsum=0;

for(inti=0;i

sum+=b[i];

}

System.out.println("和为:

"+sum);

doublelevel=0.0;

level=sum/10.0;

System.out.println("平均值:

"+level);

}

}

运行结果截图如下:

30.100个人吃100个馒头,1个大人吃3个,3个小孩吃一个。

编写程序计算有

几个大人几个小孩,如果满足条件的情况有多个,则每个结果都输出。

packagecom.demo;

publicclassDemo01{

publicstaticvoidmain(String[]args){

for(inti=0;i<100;i++){

for(intj=100-i;j<300;j++){

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最大。

packagecom.demo;

publicclassDemo01{

publicstaticvoidmain(String[]args){

intm,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);i++)

if(a%i==0)

break;

if(i>(a/2)){

x=1;

b=m-a;

}

for(j=2;j<=(b/2);j++)

if(b%j==0)

break;

if(j>(b/2))

y=1;

if(x*y==1){

System.out.println(m+"="+a+"+"+b);

x=0;

y=0;

break;

}

}

}

}

26.在上台阶的时候,每次可以上一个,或者上两个,给定一个数字表示一共有

多少个台阶,编写程序计算有多少种可能的走法。

源程序如下所示:

packagecom.demo;

publicclassDemo01{

publicstaticvoidmain(String[]args){

intn=10;

for(inti=0;i

for(intj=0;j<=n/2;j++){//控制走二级台阶的人数

if(i*1+j*2==n){

System.out.println("走一介台阶的有;"+i+"走两阶台阶的有:

"+j);

}

}

}

}

}

程序运行结果截图如下:

40编写方法使用冒泡排序对数组进行排序,参数要是要排序的数组。

源程序如下所示:

packagecom.demo;

publicclassDemo01{

publicstaticvoidmain(String[]args){

int[]a={32,31,64,142,332,13,144};

Demo01.bubbleSort(a);

for(inti=0;i

System.out.print(a[i]+"");

}

}

publicstaticvoidbubbleSort(inta[]){

for(inti=1;i

for(intj=1;j

if(a[j]>a[j+1]){

inttemp=a[j];

a[j]=a[j+1];

a[j+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、StringBuffer、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)编写有一个参数的构造方法,参数为学生学号,把年龄设置为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的toString方法把得到的结果赋值给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,学号为“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的值。

源代码如下:

packagemaileku7;

publicclassStudent{

Stringsid;

Stringsname;

intsage;

//构造方法

publicStudent(){

super();

sage=18;

}

publicStudent(Stringsid){

super();

this.sid=sid;

sage=18;

}

publicStudent(Stringsid,Stringsname){

super();

this.sid=sid;

this.sname=sname;

sage=18;

}

publicStudent(Stringsid,Stringsname,intsage){

super();

this.sid=sid;

this.sname=sname;

this.sage=sage;

}

//toSting方法

publicStringtoString(){

return"Student[sid-"+sid+",sname-"+sname+",sage-"+sage

+"]";

}

//get/set方法

publicStringgetSid(){

returnsid;

}

publicvoidsetSid(Stringsid){

this.sid=sid;

}

publicStringgetSname(){

returnsname;

}

publicvoidsetSname(Stringsname){

this.sname=sname;

}

publicintgetSage(){

returnsage;

}

publicvoidsetSage(intsage){

this.sage=sage;

}

}

packagemaileku7;

publicclassTestStudent{

publicstaticvoidmain(String[]args){

//调用无参数构造方法

Students1=newStudent();

s1.setSid("2013030101");

s1.setSname("杨光");

s1.setSage(19);

Stringinfo=s1.toString();

System.out.println(info);

//调用一个参数的构造方法

Students2=newStudent("2013030102");

s2.setSname("李玲");

s2.setSage(20);

Stringinfo1=s2.toString();

System.out.println(info1);

//调用两个参数的构造方法

Students3=newStudent("2013030103","王宾");

Stringinfo2=s3.toString();

System.out.println(info2);

//调用三个参数的构造方法

Students4=newStudent("2013030104","杨路",18);

Stringinfo3=s4.toString();

System.out.println(info3);

}

}

运行结果截图如下:

19、编写一个方法对学生数组进行排序,方法参数是学生数组,学生使用Student类表

示,包括姓名、学号和成绩。

要求按照成绩高低进行排序。

源程序如下:

publicclassStudent{

publicstaticvoidmain(String[]args){

Stringsid;

Stringsname;

intscore;

ScannerScore=newScanner(System.in);

int[]student=newint[10];

System.out.println("亲输入学生成绩:

");

for(inti=0;i

student[i]=Score.nextInt();

}

System.out.println("排序后的成绩为:

");

Arrays.sort(student);

for(inti=0;i

System.out.print(student[i]+"");

}

}

}

运行结果如下截图:

21、编写方法实现字符串压缩的功能,连续的n个字符x表示为xn,例如aaaa表示为

a4,如果只出现一次直接输出即可。

例如输入aaaaaaaabbbccdddeeebbba,输出

a7b3c2d3e3b3a。

packagecom.demo;

publicclassDemo01{

publicstaticvoidmain(String[]args){

Strings=comp("aaaaaaaabbbccdddeeebbba");

System.out.println(s);

}

publicstaticStringcomp(Stringstr){

inti=1;

StringBuilderbuf=newStringBuilder();

intcount=1;

charch=str.charAt(0);

for(;;){

charc=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;

}

}

returnbuf.toString();

}

}

六、实验总结与体会:

实验四深入面向对象

一、实验目的与要求

(1)深刻理解面向对象的三大特征;

(2)熟练掌握关键super、final的含义及用法;

(3)理解什么是抽象类、抽象方法,以及两者间的关系;

(4)深刻理解接口的概念、作用,以及与抽象类的差别;

(5)类类型的转换(向上和向下转换),运算符instanceof使用;

(6)深刻理解、掌握动态性;

(7)Object、Class这2个系统类的常用方法,了解反射的概念及目的。

(8)初步了解对象间进行消息传递的方式(两种一是乙类对象作为甲类的成员,对象作为方法的参数)。

二、实验原理

(1)面向对象三大特征:

面向对象的3大特征是封装、继承、多态。

封装:

在定义一个类时都需要认真思考,类是现实世界中事物的属性和对这些属性进行操作的方法的集合体。

因此一个类应该包括数据成员和函数成员,仅仅只含一种成员的类很少(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1