任务描述
一、 项目准备
开发工具:JDK、Eclipse
需求分析:见详细描述
效果演示:见详细描述
二、整体要求
1、 完成需求分析和详细设计中所涉及到的所有功能。
2、 代码结构要层次分明,代码编辑思路要清晰、整洁。
3、 要求Java代码书写、命名符合规范,并在代码中添加必要的注释
4、 程序运行效果与提供的页面效果图、结构保持一致
5、 将作业项目导出(Export)成压缩文件
三、详细设计
设计一个类DataManage,包括如下的方法:
-
插入数据:public int[] insertData() {}
-
显示所有数据:public void showData(int[] a, int length) {}
-
在指定位置处插入数据: public void insertAtArray(int[] a, int n, int k) {}
-
查询能被3整除的数据:public void divThree(int[] a) {}
-
显示提示信息:public void notice();
-
主方法
每个方法的具体要求可以参见评分标准。
注意:在8-1小节最后介绍了如何提交作业,作业中一定要包括.java文件呦!
规范
-
每个类都封装在自己独立的 ".java"文件中;
-
文件、class、成员变量命名规范;
-
代码结构要层次分明;
-
Java代码规范及添加适量注释。
程序整体运行效果
-
程序正常运行,且满足效果图要求;
-
信息间分隔符“*”号数量不做统一要求。
插入数据方法
-
能够完成需求中向数组插入数据的方法。
-
要求插入的数据不能为0
显示所有数据方法
-
能够完成需求中显示所有数据的方法。
-
假设数组长度为10,要能完成在指定位置处插入数据前显示9个数据,在指定位置处插入数据后显示10个数据。提示:以最后一个元素是否为0作为判断标准。
在指定位置处插入数据方法
-
能够完成需求中在指定位置处插入数据的方法。
-
要求不能覆盖原有的数据
查询能被3整除的数据的方法
-
能够完成需求中查询能被3整除的数据的方法。
-
要求如果不存在能被3整除的数据,要给出提示信息
显示提示信息菜单的方法
-
能够完成显示提示信息菜单的方法。
主方法
要求如下:
-
使用switch结构完成主体功能,并调用方法完成演示效果中所示的功能。
-
如果输入0-4以外的数字,应给出错误提示。
/** 1、定义一个数组,可以插入数据 2、显示所有的数据 3、在指定的位置插入下一条数据 4、查询能被3整除的数据 5、退出 **/ package test2; import java.util.Scanner; import java.util.List; import java.util.ArrayList; public class DataManage2 { private static int[] arr ; //插入数据 public int[] insertData(int length) { int inputInt; arr = new int[length]; for(int i=0;i< arr.length;i++){ System.out.println("请给数组输入第"+(i+1)+"条内容:"); Scanner scanner=new Scanner(System.in); inputInt =scanner.nextInt(); arr[i]=inputInt; } System.out.println("赋值后的数组为:" ); showData(arr,length); return arr; } //显示所有数据 public void showData(int[] arr,int length) { if(null == arr){ System.out.println("arr is null , exit showData function."); return; } String msg ="数组内容为:"; //for(int i=0;i<arr.length;i++){ for(int i=0;i<length;i++) { msg = msg + " " + arr[i]; } System.out.println(msg); } //在指定位置处插入数据 public void insertAtArray(int[] arr, int n, int k) { if(null == arr){ System.out.println("arr is null , exit insertAtArray function."); return; } int length=arr.length; System.out.println("插入数据前的数组为:"); showData(arr, arr.length); int newArray[]=new int[length+1]; if(k >= 0 && k < arr.length && n!=0) { System.arraycopy(arr,0,newArray,0,k); newArray[k]=n; System.arraycopy(arr,k,newArray,k+1,length-k); System.out.println("插入数据后的数组为:"); arr = newArray; showData(arr, arr.length); } else if (n==0 ){ System.out.println("输入数据不能为0"); } else { System.out.println("数组下标不能越界"); } } //查询被3整除的数据 public void divThree(int[] arr) { if(null == arr){ System.out.println("arr is null , exit divThree function."); return; } List list = new ArrayList(10); for (int i = 0; i < arr.length; i++) { if (arr[i] % 3 == 0) { list.add(arr[i]); } } if(list.isEmpty()){ System.out.println("不存在能被3整除的数据"); } else System.out.println("能被3整除的数为:"+list); } public void printStart(){ System.out.println("*********************"); } //显示提示信息 public void notice(){ printStart(); System.out.println("1--插入数据"); System.out.println("2--显示所有数据"); System.out.println("3--在指定的位置处插入下一条数据"); System.out.println("4--查询能被3整除的数据"); System.out.println("0--退出"); printStart(); } //主方法 public static void main(String[] args) { DataManage2 dataManage=new DataManage2(); boolean flag = true; while(flag){ dataManage.notice(); System.out.println("请输入对应的数字进行操作:"); Scanner sc=new Scanner(System.in); int n=sc.nextInt(); switch(n){ case 0: System.out.println("退出程序"); flag = false; break; case 1: dataManage.insertData(3); break; case 2: dataManage.showData(arr,3); break; case 3: System.out.println("请输入要插入的数据"); Scanner data=new Scanner(System.in); int Num =data.nextInt(); System.out.println("请输入要插入的数据的位置"); Scanner index=new Scanner(System.in); int i=index.nextInt(); dataManage.insertAtArray(arr, Num,i); break; case 4: dataManage.divThree(arr); break; default: System.out.println("Sorry,您的输入无效!"); } } } }