深圳大学-Java程序设计-必实验1 基本类型应用

实验目的与要求

    实验目的:在掌握JAVA数组基本概念及应用的基础上,变换数组的内容,完成主类创建,查找等功能的实现;熟练掌握数据类型、运算符、表达式和语句。

实验要求:

(1) 编写Java程序:创建一个1000×100×1000三维的float数组,对数组中的元素进行随机赋值(要求使用Math.random()生成0-1之间的数)。通过算法找到该数组中最大的15个数,要求从大到小输出,同时计算整个程序所耗费的时间,并分析算法的复杂度。对每一行语句加上注释。在报告中附上程序截图、运行结果截图和详细的文字说明。(20分)

(2) 编写Java程序:利用随机数生成一个7位数(整数),并判断它是不是回文。要求对每个生成的随机数输出三个信息:随机数、逆序数、是否是回文。所谓“回文”是指一种从前向后读和从后向前读都一样的数字,例如,1234321、322223。对每一行语句加上注释。在报告中附上程序截图、运行结果截图和详细的文字说明。(15分)

(3) 编写Java程序:从键盘输入15个整数,放入一个一维数组,然后将前5个元素与后5个元素对换,即将第1个元素与第15个元素互换,将第2个元素与第14个元素互换,依次类推。对每一行语句加上注释。在报告中附上程序截图、运行结果截图和详细的文字说明。(15分)

(4) 编写Java程序:输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个“水仙花数”,因为153=1^3+5^3+3^3。对每一行语句加上注释。在报告中附上程序截图、运行结果截图和详细的文字说明。(15分)

(5) 编写Java程序:找出1024以内的所有完数及相应的因子。所谓“完数”是指一个数如果恰好等于它的因子之和,例如,6=1+2+3。对每一行语句加上注释。在报告中附上程序截图、运行结果截图和详细的文字说明。(15分)

报告写作。要求:主要思路有明确的说明,重点代码有详细的注释,行文逻辑清晰可读性强,报告整体写作较为专业。(20分)

说明:

(1)本次实验课作业满分为100分,占总成绩的比例(待定)。

(3)报告正文:请在指定位置填写,本次实验需要单独提交源程序文件(源程序单独打包Blackboard上传,不要包含外部导入的包

(4)个人信息:WORD文件名中的“姓名”、“学号”,请改为你的姓名学号;实验报告的首页,请准确填写“学院”、“专业”、“报告人”、“学号”、“班级”、“实验报告提交时间”等信息

(5)提交方式:截至时间前,请在Blackboard平台中提交。

(6)发现抄袭(包括复制&粘贴整句话、整张图),抄袭者和被抄袭者成绩记零分

(8)期末考试阶段补交无效。

(1) 编写程序:创建一个1000×100×1000三维的float数组,对数组中的元素进行随机赋值(要求使用Math.random()生成0-1之间的数)。通过算法找到该数组中最大的15个数,要求从大到小输出,同时计算整个程序所耗费的时间,并分析算法的复杂度。对每一行语句加上注释。在报告中附上程序截图、运行结果截图和详细的文字说明。(20分)

程序截图:

运行结果截图:

首先创建该三维数组,通过遍历对数组中每个元素进行随机赋值,并强制转换Math.random返回值为float类型。

之后利用优先队列存储三维数组中最大的15个数字,如果堆未满15个元素,可以直接加入,此外如果当前数组元素大于堆顶部元素则替换掉。

再创建一个数组来存放结果,并逆序打印,实现从大到小的打印顺序。

最后通过在运行前记录时间,运行后记录时间,两者相减即可得到整个程序总耗时。

算法复杂度分析:

找到最大的15个数的时间复杂度是O(n^3 * log k),其中n是三维数组的长度,k是要找的数的个数,在本程序中即O(1000^3 * log 15)

(2)编写程序:利用随机数生成一个7位数(整数),并判断它是不是回文。要求对每个生成的随机数输出三个信息:随机数、逆序数、是否是回文。所谓“回文”是指一种从前向后读和从后向前读都一样的数字,例如,1234321、322223。对每一行语句加上注释。在报告中附上程序截图、运行结果截图和详细的文字说明。(15分)

程序截图:

运行结果截图:

首先在main函数中利用随机数生成一个7位整数,输出该随机数,并调用huiwen函数来得到逆序数和打印逆序数,并判断生成的随机数是否与逆序数相等,相等返回1,不等返回0,在主函数中根据函数返回值,输出该随机数是否为回文数字。

(3)编写程序:从键盘输入15个整数,放入一个一维数组,然后将前5个元素与后5个元素对换,即将第1个元素与第15个元素互换,将第2个元素与第14个元素互换,依次类推。对每一行语句加上注释。在报告中附上程序截图、运行结果截图和详细的文字说明。(15分)

    程序截图:

运行结果截图:

首先利用 Scanner 实现从键盘读入integer型数据,从键盘获取15个整数,通过遍历放入一个一维数组arr,并打印该数组的值。

然后将前5个元素与后5个元素对换,即将第1个元素与第15个元素互换,将第2个元素与第14个元素互换,定义一个整型变量t用来暂时存放数组的值,观察到每次互换的数组下标和为14,所以依据此特点进行互换。

最后通过打印互换后数组的值,与前次数组的打印值做对比,验证互换成功。

(4)编写程序:输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个“水仙花数”,因为153=1^3+5^3+3^3。对每一行语句加上注释。在报告中附上程序截图、运行结果截图和详细的文字说明。(15分)

程序截图:

运行结果截图:

首先定义x,y,z分别来存放三位数的个位十位百位,并初始化为0

然后通过for循环对每一个三位数进行判断,在每次循环中,利用除号和取余号分别获得个位十位百位,再验证各位数字立方是否等于该数本身,如果是则打印。

(5)编写程序:找出1024以内的所有完数及相应的因子。所谓“完数”是指一个数如果恰好等于它的因子之和,例如,6=1+2+3。对每一行语句加上注释。在报告中附上程序截图、运行结果截图和详细的文字说明。(15分)

程序截图:

运行结果截图:

定义一个方法,用来判断一个整数是否为完数,是则返回1,不是返回0:需要初始化因子之和为0,再遍历从1到n-1的所有整数,如果i是n的因子,将i加入因子之和,最后判断因子之和是否与本身相等,

    再定义一个方法,用来打印一个数的所有因子(除本身外):通过遍历,打印每一个因子

    在主方法中遍历从1到1024的所有整数,调用isPerfect方法,判断该数是否为完数,若返回值为1 说明该数是完数,则打印该数是完数,并调用print方法打印出该数所有因子(除本身外)。

++++++++++++++++++++++++++++++++++++++++++++++++++++++

其他(例如感想、建议等等)。

感想:

在完成Java第二次作业后,可以深切地体会到编程语言的共通性,在掌握C语言和C++数组基本概念及应用的基础上,学习和应用Java数组内容也逐渐得心应手。在这次练习中,我掌握了如何使用数组,如何调用Math.random()方法来生成一个0到1之间的随机浮点数,以及如何自己定义方法。

当然,错误也是共通的,以前在C语言中犯的错在这次实验中也是多次出现,比如漏了“}”导致报错,忽略全局变量与局部变量的作用域区别等等,良好的编程习惯不是一朝一夕就能练成的,希望自己也能通过这门课有所进步吧。

最后希望在以后的学习中,通过不断地练习和试错,可以更深入地掌握Java这门编程语言。

深圳大学Java程序设计课程中涉及到了网络编程应用。网络编程是指通过网络进行数据交互的程序设计方式。 在网络编程中,我们需要使用Java提供的一些类库和API来实现网络通信。Java中提供了一套完善的网络编程工具,包括Socket编程、ServerSocket编程、URL编程等。 Socket编程是实现网络通信的基本方式之一,它是一种面向连接的通信方式。通过创建一个Socket对象,程序可以与远程服务器进行连接,并进行数据的发送和接收。使用Socket编程,我们可以实现客户端和服务器之间的通信,实现从客户端向服务器发送请求,服务器处理请求并返回结果的功能。 ServerSocket编程是一种服务器端的网络编程方式,它可以接收客户端的连接请求并与之建立连接。通过创建一个ServerSocket对象,并调用其accept()方法,服务器可以等待客户端的连接请求,并将连接请求转交给一个新的Socket对象进行处理。使用ServerSocket编程,我们可以实现服务器的功能,接收来自多个客户端的请求,并处理这些请求。 URL编程是一种用于访问远程资源的网络编程方式。通过创建一个URL对象,并调用其openConnection()方法,我们可以建立与远程服务器的连接,并获取服务器返回的数据。使用URL编程,我们可以实现通过HTTP协议获取网页内容、下载文件等功能。 在深圳大学Java程序设计课程中,我们将学习如何使用这些网络编程的工具和技术,并实践一些网络应用开发。通过这门课程的学习,我们可以掌握网络编程的基本原理和常用技术,提升自己的Java程序设计能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值