Java面向对象程序设计实验报告(实验一 面向对象基础练习)

news2024/11/28 6:25:24

 ✨作者:命运之光 
专栏:Java面向对象程序设计实验报告

目录

✨一、需求分析

✨二、概要设计

✨三、详细设计

✨四、调试分析

✨附录:源代码(带注释)


实验一 面向对象基础练习

实验环境:Eclipse+JDK

实验目的:

1、熟悉开发环境及环境变量的配置;

2、掌握面向对象的基础知识,基本数据类型,数组以及流程语句等内容。

实验内容:

回形数格式方阵的实现

提示:从键盘输入一个整数(1~20),以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字2,则程序输出:

1 2

4 3

输入数字3,则程序输出:

1 2 3

8 9 4

7 6 5

输入数字4, 则程序输出:

1   2   3   4

12  13  14  5

11  16  15  6

10   9  8    7


以下是实验报告内容

✨✨前言:由于五一假期导致最后一节Java上机实验课没有上,所以不是很清楚实验报告的具体要求,我就按照之前数据结构实验报告的格式写了这次的Java上级报告,有需要的还是直接复制粘贴就行了,不过这次我写的比较敷衍,自己要上交实验报告的话,最好还是稍微修改美化一下🦄。

✨一、需求分析

1.输入要求:

用户从键盘输入一个整数n(1~20),作为方阵的大小。

2.输出要求:

输出一个n×n的方阵,按照顺时针螺旋的形式填入数字1到n×n。

3.功能需求:

(1)程序应验证输入的整数n是否在1~20的范围内,如果不是,则显示错误信息并结束程序。

(2)程序应根据输入的整数n生成一个n×n的二维数组,用于存储回形数格式方阵的数字。

(3)程序应按照顺时针螺旋的方式填充数组,从数字1开始逐渐增加。

(4)程序应正确输出生成的回形数格式方阵。

4.非功能需求:

(1)用户界面友好:程序应提示用户输入整数n,并在输出方阵时以易读的方式显示数字。

(2)效率要求:程序在合理的时间内生成和输出回形数格式方阵。

5.约束条件:

(1)输入的整数n必须在1~20的范围内。

(2)程序的开发环境为Eclipse+JDK。

✨二、概要设计

1.概述:

回形数格式方阵实验旨在根据用户输入的整数n生成一个n×n的方阵,其中按照顺时针螺旋的方式填入数字1到n×n,并将结果输出。

2.主要模块:

main类:该类包含程序的入口点,用于接收用户输入并调用,在主类中写出实现回形数格式方阵的算法实现实验要求

3.类和方法设计:

类:在main类中定义了二维数组arr[][]来存入回形数组的值

4.输入输出:

输入:用户从键盘输入一个整数n(1~20),作为方阵的大小。

输出:按照顺时针螺旋的形式,以易读的方式输出一个n×n的方阵。

✨三、详细设计

Main类:程序的入口点,用于接收用户输入,在主类中使用了四个for循环来实现会形数组的算法逻辑具体的算法如下:

            for(int h=1;h<=count;h++) {

                j++;

                number++;

                arr[i][j] = number;

            }

            for(int h = 1;h<=count;h++) {

                i++;

                number++;

                arr[i][j] = number;

            }

            for(int h = 1;h<=count;h++) {

                j--;

                number++;

                arr[i][j] = number;

            }

            for(int h = 1;h<=count-1;h++) {

                i--;

                number++;

                arr[i][j] = number;

            }

以上四个for循环实现了关键的算法逻辑,主要实现的是向右填充,向下填充,向左填充,向上填充。然后填充完后使用for循环循环遍历数组将回形数组输出,具体实现算法如下:

        for(int i=0;i<n;i++) {

            for(int j=0;j<n;j++) {

                System.out.print(arr[i][j]+"\t");

            }

            System.out.print("\n");

        }

✨四、调试分析

输入验证:

输入一个小于1的整数,验证程序是否能正确检测并提示错误信息。

从下图可见,输入小于1的数程序终止。

 

输入一个大于20的整数,验证程序是否能正确检测并提示错误信息。

从下图可见输入一个大于20的数并未提示错误信息,但程序依旧可以正常执行。

综上可见:程序缺少健壮性,只能满足题目要求的1~20的数字,但凡输入数异常,并没有进行相关的处理。

测试结果

测试样例1:

输入

2

结果为:

1 2

4 3

 

测试样例2:

输入

3

结果为:

1 2

4 3

 测试样例3:

输入

4

结果为:

1 2 3 4

12 13 14 5

11 16 15 6

10 9 8 7

 

✨附录:源代码(带注释)

package 命运之光;

import java.util.Scanner;

public class demo1 {      //回文数

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        int n = scan.nextInt();

        int number = 0;

        int arr[][] = new int[n][n];

        for(int count = n-1,k = 0;count >= 0;count-=2,k++) {

            number++;

            arr[k][k] = number;

            int i = k,j = k;

            for(int h=1;h<=count;h++) {

                j++;

                number++;

                arr[i][j] = number;

            }

            for(int h = 1;h<=count;h++) {

                i++;

                number++;

                arr[i][j] = number;

            }

            for(int h = 1;h<=count;h++) {

                j--;

                number++;

                arr[i][j] = number;

            }

            for(int h = 1;h<=count-1;h++) {

                i--;

                number++;

                arr[i][j] = number;

            }

        }

        for(int i=0;i<n;i++) {

            for(int j=0;j<n;j++) {

                System.out.print(arr[i][j]+"\t");

            }

            System.out.print("\n");

        }

    }

}

点击下方个人名片,可添加博主的个人QQ,交流会更方便哦~
 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/537748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MindFusion.JavaScript Pack 2023 crack

MindFusion.JavaScript Pack 2023 crack 径向树布局-添加了新的类&#xff0c;它将树级别排列在围绕根的同心圆中。 套索缩放工具-控件现在支持使用套索工具进行缩放的几种方法&#xff1a; 可以将行为属性设置为“缩放”以始终绘制缩放套索。 用户可以使用修改键和鼠标左键绘制…

如何用Nginx快速搭建个人下载站?

1.开篇 我们在下载Nginx的时候&#xff0c;发现其下载地址遵循一定的规则。 发现其下载地址为&#xff1a;https://nginx.org/download/nginx-1.24.0.tar.gz&#xff0c; 可以猜测出其下载的主页为&#xff1a;https://nginx.org/download 果然&#xff0c;该页面提供了各个版…

chatgpt赋能Python-num_python

NumPy简介&#xff1a;为什么它对数据科学如此重要&#xff1f; 什么是NumPy&#xff1f; NumPy是一种Python库&#xff0c;帮助程序员在Python中进行高度优化的科学计算。NumPy提供了许多独特的工具&#xff0c;以帮助数据科学家和工程师进行线性代数、离散傅立叶变换和其他…

三十七、微服务保护

1、初识Sentinel 1.1雪崩问题 微服务调用链路中的某个服务故障&#xff0c;引起整个链路中的所有微服务都不可用&#xff0c;这就是雪崩。 解决雪崩问题的常见方式有四种&#xff1a; 超时处理&#xff1a;设定超时时间&#xff0c;请求超过一定时间没有响应就返回错误信息&am…

DEJA_VU3D - Cesium功能集 之 109-三角形(标绘+编辑)

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码…

HTTP第15讲——HTTP的连接管理

短连接 HTTP 协议最初&#xff08;0.9/1.0&#xff09;是个非常简单的协议&#xff0c;通信过程也采用了简单的“请求 - 应答”方式。 它底层的数据传输基于 TCP/IP&#xff0c;每次发送请求前需要先与服务器建立连接&#xff0c;收到响应报文后会立即关闭连接。 因为客户端与…

chatgpt赋能Python-numpy_数据归一化

Numpy 数据归一化&#xff1a;介绍和原理 随着大数据和机器学习的发展&#xff0c;数据预处理变得越来越重要。对于数据进行标准化和归一化是其中的一项常见操作。本文将介绍numpy中的数据归一化&#xff0c;包括其原理和实现方法。 什么是数据归一化&#xff1f; 在数据处理…

Spring AOP的概念和使用

什么是AOP AOP是一种思想&#xff0c;它叫做面向切面编程&#xff0c;简单的来说就是对某一类事请做集中处理。比如说&#xff1a;登录效验功能&#xff0c;在使用AOP之前&#xff0c;我们进行登录效验需要在每个方法中写一遍登录效验的代码&#xff1b;使用AOP后&#xff0c;…

chatgpt赋能Python-numpy提取数据

Numpy提取数据&#xff1a;一种高效处理数据的方法 Numpy是Python中一个用于科学计算的库&#xff0c;它提供了一些高效的数值计算工具和数据结构。其中一个重要的功能是对大量数据进行高效的处理与分析。本文将介绍Numpy提取数据的用法&#xff0c;帮助您更高效地处理数据。 …

Java参数绑定(包括按值传递和按引用传递)

在Java中&#xff0c;参数绑定是一种将实际参数值传递给方法或函数的过程。在方法调用中&#xff0c;参数绑定决定了方法的形式参数&#xff08;在方法声明中定义的参数&#xff09;和实际参数&#xff08;传递给方法的参数&#xff09;之间的关系。 Java中的参数绑定有两种形…

chatgpt赋能Python-numpy数据归一化

Numpy数据归一化&#xff1a;什么是归一化以及为什么要归一化&#xff1f; 当我们处理数据时&#xff0c;我们常常要将它们归一化。归一化是将数值范围缩放到标准范围内的过程。这可以确保不同的特征或变量在计算机算法中具有相同的权重。这对于一些机器学习算法、人工神经网络…

chatgpt赋能Python-mac_python怎么用

如何在Mac上使用Python进行编程&#xff1f; 如果你是一位Python开发者&#xff0c;想在Mac上进行编程&#xff0c;本篇文章将会告诉你如何使用Python在Mac上进行编程。首先&#xff0c;你需要确认你的Mac上是否安装了Python&#xff0c;如果你是新手&#xff0c;可以去Python…

nginx(七十六)nginx与HTTP请求行的深入探讨

一 nginx与请求行相关 nginx处理来自客户端的HTTP请求行和请求头 ① 关于请求行的变量 $request $request_method SP $request_uri SP $server_protocol "案例讲解" ② nginx作为服务端接收关于method控制 1) 请求方法和支持的协议版本包含如下: -->协议…

离线安装apisix

公司部分机器因为某些原因无法联网&#xff0c;只能离线安装apisix&#xff0c;折腾了很久&#xff0c;走了很多弯路&#xff0c;记录一下安装过程。 下载所有的包 安装epel源 sudo yum install epel-release在home下创建文件夹/apisix-dependence 下载apache-apisix-repo以…

chatgpt赋能Python-mac上的python

在Mac上使用Python编程的好处 作为一名有10年Python编程经验的工程师&#xff0c;我必须说Mac是一个出色的编程工作台。Mac操作系统本质上就是一个整合了各种开发工具的平台&#xff0c;为Python编程提供了很好的支持。这篇文章将介绍在Mac上使用Python编程的好处。 简单易用…

VOSviewer安装、环境配置及中英文文献的分析

VOSviewer介绍&#xff1a; VOSviewer是一个用于构建和可视化文献计量网络的软件工具。例如&#xff0c;这些网络可能包括期刊、研究人员或单个出版物&#xff0c;它们可以基于引文、书目耦合、共同引用或共同作者关系构建。VOSviewer 还提供文本挖掘功能&#xff0c;可用于构…

总线(计组)

概概述 基本概念 1、总线&#xff1a;是构成计算机互联的机构&#xff0c;是多个系统功能部之间进行数据传输的公共通路 2、总线的分类&#xff1a; 内部总线、系统总线、IO总线 内部总线&#xff1a;cpu连接寄存器及各运算部件的总线 系统总线&#xff1a;cpu连接其他高速功…

Typora的自定义主题

Typora的自定义主题 修改我们的Typora主题1. 在文件夹C:\Users\Peter\AppData\Roaming\Typora\themes中&#xff0c;加入下面的css文件即可&#xff0c;命名为my.css。my.css内容 2. 选择你的主题为my3. 效果如图 注意&#xff1a;如果你的字体没有完全像我一样&#xff0c;是因…

学习RHCSA的day.03

目录 2.6 Linux系统的目录结构 2.7 目录操作命令 2.8 文件操作命令 2.6 Linux系统的目录结构 1、Linux目录结构的特点 分区加载于目录结构&#xff1a; 使用树形目录结构来组织和管理文件。整个系统只有一个位于根分区的一个根目录&#xff08;树根&#xff09;、一棵树。…

chatgpt赋能Python-mac版python教程

了解Mac版Python教程 Python编程语言越来越受欢迎&#xff0c;是由其简单易学、使用广泛的特点所得。Mac用户也喜欢使用Python进行编程&#xff0c;因为Python在macOS中得到良好的支持。在本篇文章中&#xff0c;我们将介绍一些最受欢迎的Mac版Python教程&#xff0c;并提供一…