java初学实验.docx

上传人:b****8 文档编号:10339638 上传时间:2023-02-10 格式:DOCX 页数:26 大小:166.98KB
下载 相关 举报
java初学实验.docx_第1页
第1页 / 共26页
java初学实验.docx_第2页
第2页 / 共26页
java初学实验.docx_第3页
第3页 / 共26页
java初学实验.docx_第4页
第4页 / 共26页
java初学实验.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

java初学实验.docx

《java初学实验.docx》由会员分享,可在线阅读,更多相关《java初学实验.docx(26页珍藏版)》请在冰豆网上搜索。

java初学实验.docx

java初学实验

1、要求用户输入(BufferedReader)三条边的长度(floatFloat.parseFloat()),判断(if..else)

并输出这三条边能否组成一个三角形。

2、如果一个整数按反向顺序放置后仍然与原数相等,称为回文数(如:

12321)。

编程:

要求用户输入一个5位的整数,判断此数是否为回文数。

(注意:

对一个5位整数n(int类型),要取出它的万位(n/10000)、千位(n%10000/1000)、十位(n%100/10)和个位(n%10),如果万位==个位&&千位==十位,则为回文数)

3、要求用户输入一个学生的成绩(0~100),判断并输出该成绩的等级(switch)。

switch(score/10){

}

4、要求用户输入一个年份和月份,判断该年该月有多少天。

(switch)

switch(month){

case1:

case3:

.....

case4:

case6:

.......

case2:

if(){}else{}

break;

default:

......

}

5、利用while循环计算1+4+7+10+13+16+19+...+58

6、利用while循环计算2+6+18+54+162+486+1458

7、1、求a+aa+aaa+aaaa+....+aaaaaaaaaaa的和,要求a(1~9)由用户输入,

式子的项数n也由用户输入。

比如,2+22+222+2222+22222,a=2,n=5.

p=p*10+a;

sum=sum+p;

//式子有多少项,循环就是多少次

//循环体中先计算当前项(找到一个表达式表示前后两项的关系,

//“前后两项”使用同一个变量p)

//然后累加到sum上

8、请编程验证一下“角谷猜想”:

对任意的自然数,若是奇数,就对它乘以3加1;

若是偶数就对它除以2;这样得到一个新数,再按上述奇数、偶数的计算规则进行计算,

一直进行下去,最终将得到1。

如对自然数11,

按上述规则依次得到34、17、52、26、13、40、20、10、5、16、8、4、2、1。

要求用户输入一个自然数(正整数),然后编程输出依次变换最终得到1的过程。

n

do{

if(){n=n*3+1}else{}

}while(n!

=1);

9、判断并输出500以内既能够被3整除又能够被6整除的整数。

//图形有多少行,外层循环就是多少次

//观察图形一行有几部分组成,外层循环的内部就有几个循环,这些循环分别用来输出有变化规律每一部分

//根据每一部分的变化规律,找出内层的循环所需的次数

10、

*

**

***

****

*****

11、

*

**

***

****

*****

12、搬砖问题:

36块砖,36人搬,男人搬4块,女人搬3块,两个小孩抬1块。

要求一次搬完,问需要男人、女人、小孩各几人?

13、编写程序:

输出如下图型(提示:

将一行分为3部分,分别是空格、数字递增部分、数字递减部分)

1

121

12321

1234321

123454321

14、打印九九乘法表:

123456789

---------------------------------------

123456789

24681012141618

369121518212427

4812162024283236

51015202530354045

61218243036424854

71421283542495663

81624324048566472

91827364554637281

15、编写一个应用程序,要求用户输入5个整数(使用循环结构),输出这五个整数的最大值和最小值。

max初始值要比用户输入的第一个数小

min初始值要比用户输入的第一个数大

intmax=Integer.MIN_VALUE;//-Math.pow(2,31)

intmin=Integer.MAX_VALUE;//Math.pow(2,31)-1

16、定义一个方法能够判断并返回两个整数的最大值,并调用自己的方法测试是否正确。

17、编程:

要求用户输入一个字符串,按相反顺序输出该字符串。

如输入abcd,输出dcba。

要求把一个字符串按相反顺序输出的过程定义为一个方法。

18、编写一个方法用于求任意两个正整数的最大公约数,调用此方法求16和24的最大公约数。

备注:

求最大公约数使用辗转相除法,我国古代数学家秦九韶1247年在《数书九章》中记载了此方法,其处理过程如下:

(1)提供两个数m和n

(2)以n除m,求得余数r(r=m%n)

(3)判断r是否为0,若r=0,此时的n值即为最大公约数,计算结束。

若r≠0,更新被除数和除数,n送m(即m=n),r送n(即n=r),转到

(2)。

r=m%n;

while(r!

=0){m=n;n=r;r=m%n}

19、不使用Math类提供的相关方法,自己编写一个方法publicintround(doublen)能够对小数n进行四舍五入返回一个整数。

注意考虑n的正负。

用一些正的或负的的小数测试一下自己编写的方法是否正确。

(基本思想:

n是一个小数,那么(int)n则得到n的整数部分,n减去自己的整数部分以后,通过跟正或负0.5比较大小,可决定四舍五入后的整数是多少)

//一个方法没有static修饰符,称作实例方法(对象方法)【非静态方法】,一定要先创建该方法所在的类的对象(类名对象名=new类名();),才能通过"对象名.方法名([实参])"的形式来调用

//一个方法有static修饰符,称作类方法【静态方法】,可以通过"类名.方法名([实参])"形式调用,如果在类自身中调用,"类名"还可省略

//如果创建该方法所在的类的对象,也可(不推荐)通过"对象名.方法名([实参])"的形式来调用

20、编写递归方法getPower(intx,inty),用于计算x的y次幂(假定x,y都是正整数)(不要使用Math.pow()),在main主方法中调用它求2的10次幂。

21、编写递归方法gcd,返回x和y的最大公约数。

x和y的最大公约数方法gcd的递归定义如下:

如果y等于0,则gcd(x,y)就是x;否则,gcd(x,y)就等于gcd(y,x%y),其中“%”是求模运算符。

22、定义一个数组来存储12个学生的成绩{72,89,65,58,87,91,53,82,71,93,76,68},计算并输出学生的平均成绩。

23、定义一个数组来存储12个学生的成绩{72,89,65,58,87,91,53,82,71,93,76,68},统计各成绩等级(90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为E)学生人数,并将其放入到数组count中,其中:

count[0]存E级的人数,count[1]存D级的人数,……,count[4]存A级的人数。

(提示:

注意要找到各分数段同数组count的下标的关系,思想类似于课本上P215页的例子)

//90以上count[4]++

//80~89count[3]++

//70~79count[2]++

//60~69count[1]++

//60以下count[0]++

24、从键盘输入8个整数存放在一个数组中,然后将奇数和偶数分别存入到两个不同的数组中,并按奇数、偶数交替的顺序输出这两个数组中的所有数据(先交替输出,如果奇数个数多,则再输出剩下的奇数,如果偶数个数多,则再输出剩下的偶数)。

(提示与要求:

(1)定义一个数组存储从键盘输入的8个整数,先判断这8个整数中奇数和偶数的个数,才能定义存储奇数和偶数的数组的长度;

(2)把一个大的数组分别存放在奇数和偶数数组中并交替输出的过程定义为方法)

25、实现如下的排序算法:

有一种简单的排序方法叫计数排序法,这种排序算法对一个待排序的数组进行排序,并将排序结果放到另一个新的数组中。

计数排序算法针对待排序数组中的每个数据,扫描待排序的数组一趟,统计待排序数组中有多少个数据的值比该数据的值小。

假设针对某一个记录,统计出的计数值为c,那么,这个记录在新的有序数组中的合适的存放位置即为c。

程序框架如下,补充完整:

publicclassCountSort

{

publicstaticvoidcountSort(intn[])//对数组n进行计数排序的方法

{

intm[]=newint[n.length];//定义排序后的数组m

intcount[]=newint[n.length];//记录数组n中某个数据在数组m中的位置

/*

a数组元素

a[0]

a[1]

a[2]

a[3]

a[4]

a[5]

a[6]

a[i]的值

7

4

0

6

2

5

1

count数组元素

count[0]

count[1]

count[2]

count[3]

count[4]

count[5]

count[6]

最终统计出的count[i]的值应该为

6

(代表比a[0]小的数有6个,a[0]在数组m中的下标应该为6)

3

(代表比a[1]小的数有3个,a[1]在数组m中的下标应该为3)

0

(代表比a[2]小的数有0个,a[2]在数组m中的下标应该为0)

5

……

2

…..

4

……

1

…….

*/

……………………..

………………………

………………………

…………………….

for(inti=0;i

{

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

}

System.out.println();

}

publicstaticvoidmain(String[]args)

{

inta[]={7,4,0,6,2,5,1};

CountSort.countSort(a);

}

}

26、编写顺序查找的方法publicstaticint[]ordinalSearch(intdata[],intkey),要求该方法返回一个数组(如果key存在,数组中各元素的值分别为关键字key在原数组data中的各下标;如果key不存在,则返回一个长度为1的数组,数组元素为-1)。

【基本过程:

(1)先扫描数组data,统计数组中key的个数n;

(2)如果n为0,直接返回一个数组元素为-1的数组;否则的话定义一个数组intindex[]=newint[n],再扫描数组data,把数组中值为key的各个元素的下标保存到数组index中,最后返回数组index】

27、编写一个方法publicstaticint[][]dyadicArraySort(inta[][]),能够实现对一个二维数组a进行升序排列,要求整个二维数组中最小的值为a[0][0],然后依次是a[0][1],a[0][2]….,a[1][0],a[1][1]…..,使用一个无序的二维数组对你编写的方法进行检验。

(基本思想:

在方法体中,先将二维数组转换为一个一维数组,然后对一维数组进行排序,排好序后再将一维数组中的各个元素依次搬到二维数组中)

28、

(一)根据下面的要求实现人类People

a)人类People的成员变量:

私有成员name表示姓名,为String类型

私有成员sex表示性别,为boolean类型(true表示男,false表示女)

私有成员age表示年龄,为int类型

b)People类的构造方法(定义完成员方法再定义构造方法)

(1)无参的构造方法People(),将各成员变量初始化为默认值

(2)People(Stringname,booleansex,intage)分别对姓名、性别、年龄进行初始化

(3)People(Stringname,booleansex)分别对姓名、性别进行初始化

(4)People(Stringname,intage)分别对姓名、年龄进行初始化

c)人类People的成员方法:

(1)设置姓名的公有方法setName()

(2)读取姓名的公有方法getName()

(3)设置性别的公有方法setSex()

(4)读取性别的公有方法publicStringgetSex()

如果sex为true,返回字符串”male”,否则返回字符串”female”

(5)设置年龄的公有方法setAge()

(6)读取年龄的公有方法getAge()

(7)voiddisp()将人的姓名、性别、年龄输出到屏幕

(二)建立类People的测试类,分别用各构造方法创建对象,然后输出该人的基本信息。

在Eclipse中自动生成set和get方法:

source—>generategettersandsetters

在Eclipse中自动生成构造方法:

source—>generateconstructerusingfields

29、预备知识:

static、final及finalstatic修饰符的使用,查看课件并编写程序进行深刻理解。

(一)根据下面的要求实现圆类Circle

a)圆类Circle的成员变量:

私有最终静态成员P表示圆周率(初始化为Math.PI)

私有成员radius表示圆的半径,为double类型

b)圆类Circle的成员方法:

Circle()构造方法,将半径置0

Circle(doubler)构造方法,创建Circle对象时将半径初始化为r

doublegetRadius()获得圆的半径值

voidsetRadius()设置圆的半径值

读取圆周率P的方法(需要什么修饰符?

doublegetPerimeter()获得圆的周长

doublegetArea()获得圆的面积

voiddisp()将圆的圆周率、半径、周长、面积输出到屏幕

(二)建立圆类Circle的测试类CircleTest,

1)在没有圆类Circle的任何对象时,输出成员变量圆周率P的值。

2)使用构造方法Circle()创建对象c1,并将半径设置为3.0,把圆c1的圆周率、半径、周长、面积输出到屏幕

3)使用构造方法Circle(doubler)创建对象c2,并将半径初始化为5.2,把圆c2的圆周率、半径、周长、面积输出到屏幕

注意:

将上述两题的两个类(注意两个类是平行关系,Circle类不使用public修饰符,测试类要定义为public的)写到一个.java文件中即可。

(三)自己把上面的两个类写到两个.java文件中,在Circle中声明包,然后CircleTest类引入Circle类并使用;修改Circle类中成员变量和方法的控制符,验证不同控制符的访问范围。

(无需提交作业)

30、为提高你的编程速度,请学会使用Eclipse软件的代码自动生成功能(如自动生成构造方法、set和get方法,覆盖方法等)

(一)根据下面的要求实现人类People

(a)人类People的成员变量:

私有成员name表示姓名,为String类型

私有成员sex表示性别,为boolean类型,true表示男,false表示女

私有成员age表示年龄,为int类型

(b)人类People的方法:

(1)无参构造方法People(),将各成员变量初始化为默认值

(2)构造方法People(Stringn,booleans,inta)

(3)设置姓名的公有方法

(4)读取姓名的公有方法

(5)设置性别的公有方法

(6)读取性别的公有方法publicStringgetSex()

如果为true,返回male,否则返回female

(7)设置年龄的公有方法

(8)读取年龄的公有方法

(8)voiddisp()将人的姓名、性别、年龄输出到屏幕

(二)通过继承第1题中的人People类,派生学生类Student。

要求如下:

(a)学生类Student的成员变量:

私有成员department表示所在院系,为String类型

(b)学生类Student的方法:

(1)无参构造方法Student(),将各成员变量初始化为默认值

(2)构造方法Student(Stringn,booleans,inta,Stringdep)

(3)设置院系的公有方法

(4)读取院系的公有方法

(5)voiddisp()将学生的姓名、性别、年龄、所在院系输出到屏幕

(三)建立学生类Student的测试类StudentTest,任意建立一个学生对象,并调用方法输出该学生的信息。

注意:

将上述三题的三个类分别写到三个.java文件中,然后放到一个文件夹中,文件夹命名为“学号+姓名30”,然后将该文件夹压缩为一个压缩文件(压缩文件名仍为“学号+姓名30”),提交即可。

31、

(一)定义一个抽象类GeneralPeople,要求如下:

(a)成员变量:

私有成员name表示姓名,为String类型

私有成员sex表示性别,为boolean类型,true表示男,false表示女

(b)方法:

(1)无参构造方法GeneralPeople(),将各成员变量初始化为默认值

(2)构造方法GeneralPeople(Stringname,booleansex)

(3)设置姓名的公有方法

(4)读取姓名的公有方法

(5)设置性别的公有方法

(6)读取性别的公有方法publicStringgetSex()

如果为true,返回male,否则返回female

(7)抽象方法publicabstractvoiddisp();

(二)根据抽象类GeneralPeople派生出学生类Student

(a)学生类Student的成员变量:

私有成员school表示所在学校,为Strimg类型

(b)学生类Student的方法:

(1)无参构造方法Student(),将各成员变量初始化为默认值

(2)构造方法Student(Stringname,booleansex,Stringschool)

(3)设置学校的公有方法

(4)读取学校的公有方法

(8)实现方法disp(),将学生的姓名、性别、所在学校输出到屏幕

(三)根据学生类Student派生出大学生类CollegeStudent,要求如下:

(a)CollegeStudent的成员变量:

私有成员specialty表示所学专业,为String类型

(b)CollegeStudent的方法:

(1)无参构造方法CollegeStudent(),将各成员变量初始化为默认值

(2)构造方法CollegeStudent(Stringname,booleansex,Stringschool,Stringspecialty)(3)设置专业的公有方法

(4)读取专业的公有方法

(5)voiddisp()将学生的姓名、性别、年龄、所在学校、所学专业输出到屏幕

(四)建立抽象类GeneralPeople的测试程序,要求建立一个GeneralPeople类型的数组g,任意建立几个Student类型的对象和CollegeStudent类型的对象,将这些对象依次赋值给数组g中的数组元素,用一个循环多态地调用方法disp()。

注意:

将上述4题的4个类分别写到4个.java文件中,然后放到一个文件夹中,文件夹命名为“学号+姓名31”,然后将该文件夹压缩为一个压缩文件(压缩文件名仍为“学号+姓名31”),提交即可。

32、接口在实际中更多的作用是用来制订标准的。

比如说:

“U盘(FlashDisk)和打印机(Printer)都可以插在电脑上使用,这是因为它们都实现了USB的接口,对于电脑来说,只要是符合了USB接口标准的设备就都可以插进来使用,而无需关心到底是什么设备。

请按要求实现以下各类:

(1)定义一个接口USB,其中包含两个抽象方法voidstart()和voidstop()。

(2)定义一个类FlashDisk实现接口USB,并实现该接口中的两个抽象方法,在start()方法中输出如下语句“U盘已插入,可以开始读写数据”,在stop()方法中输出如下语句“U盘已弹出,无法继续读写数据”

(3)定义一个类Printer实现接口USB,并实现该接口中的两个抽象方法,在start()方法中输出如下语句“打印机已连接,可以开始打印”,在stop()方法中输出如下语句“打印机未连接或已停止”

(4)定义一个类Computer

publicclassComputer{

publicvoidplugin(USBusb)//表示设备的插入

{

usb.start();

System.out.println("====USB设备工作正常====");

}

publicvoidpullout(USBusb)//表示设备的拔出

{

usb.stop();

}

}

(5)建立一个测试类,在main方法中创建一个Computer的对象,并调用相应的方法表示插入和拔出一个U盘,插入和拔出一个打印机。

注意:

将上述5个类分别写到5个.java文件中,然后放到一个文件夹中,文件夹命名为“学号+姓名”,然后将该文件夹压缩为一个压缩文件(压缩文件名为“学号+姓名32”),提交即可。

33、以3种不同的颜色和字体在窗体上绘制字符串“三八妇女节快乐!

”。

34、设计如下界面(性别、年龄、学院、专业的输入可省略)

要求如下:

(1)在此界面“取消”按钮之后再增加一个组件“文本区域”用来显示信息

(2)当用户点击“确定”按钮后,将刚输入的各种信息显示在一个“文本区域”中

(3)当用户点击“取消”按钮后,该界面恢复到初始状态,学号后的文本框获得输入焦点。

 

按钮上的图标使用如下的两个图标:

(在“上机指导”文件夹中查找)

35、(只提交.java文件即可,不要提交压缩包),注意文件命名格式“学号+姓名”

设计如下图形用户界面,要求程序具备以下功能:

(1)要求“学院”下拉列表与“专业”下拉列表具有联动效果,“学院”的选项与所对应的“专业”选项自由添加;

(2)把“年龄”后的文本框修改为“下拉列表框”;

(2)点击“确定”按钮在文本区域中以添加方式显示刚输入的信息;

(3)点击“取消”按钮清空各文本框里的内容,各复选框都未被选中,“学号”后的文本框获得输入焦点。

所需两个图标如下:

(在“上机指导”文件夹中查找)

36、完成课本上P495页13.21的程序。

编写一个“猜数”程序:

该程序随机在1~1000的范围中选择一个供用户猜测的整数。

然后在界面上显示如下标签:

给你一个1~1000的随机数请你猜,请输入你猜的数。

应使用一个JTextField来输入猜的

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

当前位置:首页 > 求职职场 > 简历

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

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