效果图
Eclipse
DataManage
package com.imooc.datamanage;
import java.nio.channels.NonWritableChannelException;
import java.util.InputMismatchException;
import java.util.Scanner;
public class DataManage {
/**
* 显示菜单
*/
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 int[] insertData() {
int[] a = new int[10];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < a.length - 1; i++) {
System.out.println("请输入" + (i + 1) + "个数据:");
try {
a[i] = sc.nextInt();
} catch (Exception e) {
System.out.println("输入的数据格式有误,不能有非数字!");
sc.next();
i--;
}
}
return a;
}
/**
* 显示数据中元素的内容
*
* @param a 数组
* @param longe 数组元素的个数
*/
public void showData(int[] b, int longe) {
for (int i = 0; i < longe; i++) {
System.out.print(b[i] + " ");
}
System.out.println();
}
/**
* 从键盘接收一个数据,插入到数组的指定位置处
*
* @param a 要插入的数组
* @param n 要插入的数据
* @param k 要插入的位置,从0开始
*/
public void insertAtArray(int[] a, int n, int k) {
for (int i = a.length - 1; i > k; i--) {
// 相当于a[9]=a[9-1]=a[8]
// i--,i=8
// 相当于a[8]=a[8-1]=a[7]
// k为手输的值,例k输入2,当2不比2大时,循环终止
a[i] = a[i - 1];
}
// 把从键盘接收的n=10插入到k=2(下标为2)的位置处
a[k] = n;
}
/**
* 输出数组中有被3整除的元素
*/
public void divThree(int[] a) {
// 把所有能被3整除的数,连接在一起
String str = " ";
// 有多少能被3带队的数,统计个数
int count = 0;
// 每次从数组元素a中取一个值,存放到变量n当中
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 static void main(String[] args) {
DataManage dm = new DataManage();
// // 显示从键盘接收的数据
// int[] a = dm.insertData();
// // 显示数据中元素的内容
// // 数组a从主方法中传进来
// // 此处a是上面已经得到数组a的内容
// dm.showData(a, a.length);
// // 从键盘接收一个数据,插入到数组的指定位置处
// Scanner sc = new Scanner(System.in);
// System.out.println("请输入要插入的数据:");
// int n = sc.nextInt();
// System.out.println("请输入要插入的位置:");
// int k = sc.nextInt();
// dm.insertAtArray(a, n, k);
// // 显示新数(插入据后的数据)
// dm.showData(a, a.length);
// //输出数组中有被3整除的元素
// dm.divThree(a);
// 循环输入12340
Scanner sc = new Scanner(System.in);
int input = 0;// 把从键盘输入取得的值赋值给imput这个变量
int[] a = null;// 数组类型的返回值,如果为null说明没有插入数据
int n = 0, k = 0;// n表示要插入的数据,k表示插入位置
while (true) {
dm.notice(); // 显示菜单
System.out.println("请输入对应的数字进行操作:");
try {
input = sc.nextInt();
} catch (Exception e) {
System.out.println("输入的数据格式有误,不能有非数字!");
sc.next();
continue;// 退出当前循环,但是进行下一次循环
}
// 输入0时,用break退出循环
if (input == 0) {
System.out.println("退出程序!");
break;// 结束整个while循环
}
// 从键盘输入12340,显示菜单上的对应语句
switch (input) {
case 1: // 1插入数据
a = dm.insertData();// 从键盘接收数据
System.out.println("数组元素为:");
dm.showData(a, a.length - 1);// 显示数据中元素的内容
break;
case 2:// 2显示所有数据
if (a != null) {
System.out.println("数组元素为:");
// 如果数组的最后一个元素为0,说明还没有拆入数据,因此不显示最后一个元素
if (a[a.length - 1] == 0) {
dm.showData(a, a.length - 1);// 显示数据中元素的内容-1
} else {
dm.showData(a, a.length);// 显示数据中元素的内容
}
} else {// 如果为null说明没有插入数据
System.out.println("还未在数组中插入数据,请重新选择操作!");
}
break;
case 3:// 3在指定位置处插入数据
if (a != null) {
System.out.println("请输入要插入的数据:");
try {
n = sc.nextInt();
System.out.println("请输入要插入数据的位置:");
k = sc.nextInt();
} catch (Exception e) {
System.out.println("输入的数据格式有误,不能有非数字!");
sc.next();
break;
}
dm.insertAtArray(a, n, k);// 从键盘接收一个数据,插入到数组的指定位置处
dm.showData(a, a.length);// 显示数据中元素的内容
} else {// 如果为null说明没有插入数据
System.out.println("还未在数组中插入数据,请重新选择操作!");
}
break;
case 4:// 查询数组中能被3整除的元素
if (a != null) {
dm.divThree(a);// 输出数组中有被3整除的元素
} else {
System.out.println("还未在数组中插入数据,请重新选择操作1");
}
break;
}
}
}
}