需求:定义一个类,对数组中的数据进行管理。
方法:
插入数据: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){}
package com.company;
import java.util.InputMismatchException;
import java.util.Scanner;
public class method1 {
//插入数据的方法
public int[] insertData(){
int[] a=new int[10];
Scanner scanner=new Scanner(System.in);
//少接受一个数据,为后面在指定位置插入数据做准备
for (int i=0;i<a.length-1;i++){
System.out.println("请输入第"+(i+1)+"个数据:");
try {
a[i]=scanner.nextInt();//当输入非数字时,scanner.nextInt()语句会发生异常,执行catch后面的语句。
}catch (InputMismatchException e){
System.out.println("输入的数据格式有误,不能有非数字!");
scanner.next();
i--;
}
}
return a;//一个方法中只能有一个return语句被执行。
}
/**
* 显示所有元素的方法
* @param a 数组
* @param length 数组元素的长度
*/
public void showData(int[] a,int length){
for (int i=0;i<length;i++){
System.out.print(a[i]+" ");
}
System.out.println();
}
/**
* 在指定位置插入数组
* @param a 数组
* @param n 插入的数据
* @param k 插入数据的位置
*/
//在数组中插入数据,相当于对数组的元素进行赋值,会对当前的数据进行覆盖
public void insertAtArray(int[] a,int n,int k){
//注意从最后一个数据开始移动,避免数据覆盖
for (int i=a.length-1;i>k;i--){
a[i]=a[i-1];
}
a[k]=n;
}
//查询能被3整除的数据的方法
public void divThree(int[] a){
String str = "";//定义一个空字符串,存储能被3整除的元素
int count=0;//定义一个计时器,记录能被3整除的元素的个数
for (int n:a){
if (n%3==0){
str=str+n+" ";//将当前元素添加到字符串中
count++;
}
}
if (count==0){
System.out.println("数组中没有能被3整除的元素!");
}else {
System.out.println("能被3整除的元素有:"+str);
}
}
public void notice(){
System.out.println("------------------------------------");
System.out.println("--------1.--插入数据");
System.out.println("--------2.--显示所有数据");
System.out.println("--------3.--在指定位置处插入数据");
System.out.println("--------4.--查询能被3整除的数据");
System.out.println("--------0.--退出");
System.out.println("------------------------------------");
}
public static void main(String[] args) {
method1 myInsertData=new method1();
Scanner scanner=new Scanner(System.in);
int input=0;
//数组的创建是写在插入数据的方法中的,因此在调用插入数据的方法之前,a为null
int[] a=null;
int n=0;
int k=0;
while (true){
myInsertData.notice();
System.out.println("请输入对应的数字进行操作:");
try {
input=scanner.nextInt();
}catch (InputMismatchException e){
System.out.println("输入的数据格式有误,不能有非数字!");
scanner.next();
continue;
}
if (input==0){
System.out.println("退出程序!");
break;
}
switch (input){
case 1:
//插入数据
a=myInsertData.insertData();
myInsertData.showData(a,a.length-1);
break;
case 2:
//显示所有数据
if (a!=null){
System.out.println("数组元素为:");
//如果最后一个元素为0,说明还没有插入数据
if (a[a.length-1]==0){
myInsertData.showData(a,a.length-1);
}else {
myInsertData.showData(a,a.length);
}
}else {
System.out.println("还未在数组中插入数据,请重新选择操作!");
}
break;
case 3:
//在指定位置插入数据
if (a!=null){
System.out.println("请输入要插入的数据:");
try {
n=scanner.nextInt();
System.out.println("请输入要插入数据的位置:");
k=scanner.nextInt();
}catch (InputMismatchException e){
System.out.println("输入的数据格式有误,不能有非数字!");
scanner.next();
break;
}
myInsertData.insertAtArray(a,n,k);
myInsertData.showData(a, a.length);
}else {
System.out.println("还未在数组中插入数据,请重新选择操作!");
}
break;
case 4:
//查询数组中能被3整除的元素
//数组的创建是写在插入数据的方法中的,因此在调用插入数据的方法之前,a为null
if (a!=null){
myInsertData.divThree(a);
}else {
System.out.println("还未在数组中插入数据,请重新选择操作!");
}
break;
}
}
}
}