需求:
- 插入数据 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 class DataManage { /** * 从键盘接收数据 * * @return 接收数据的数组 */ public int[] insertData() { // 定义一个长度为10的数组 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 { // nextInt方法用于从键盘接收整型数据 a[i] = sc.nextInt(); } catch (InputMismatchException e) { System.out.println("输入的数据格式有误,不能有非数字!"); // 将有问题的键盘监听重新连接起来 阻止后面直接报错 用next()继续去接收数据 sc.next(); // 当输入错误时重新输入 i--; } } return a; }
显示所有数据:
/** * 显示数组中元素的内容 * * @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 要插入的位置,从0开始 */ public void insertAtArray(int[] a, int n, int k) { // 注意从最后一个数据开始移动 避免数据覆盖 // 如果数据溢出 将倒数第二个数据覆盖最后一个 for (int i = a.length - 1; i > k - 1; i--) { a[i] = a[i - 1]; } // 赋值操作 a[k - 1] = n; }
查询是否能被3整除:
/** * 输入数组中能被3整除的元素 * * @param a */ public void divThree(int[] a) { String str = ""; int count = 0; 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("**********************************"); }
完整代码:
package array0806;
import java.util.InputMismatchException;
import java.util.Scanner;
/**
* 从键盘接收整型数据存放到数组中,并对数组中的数据进行管理
* (1)插入数据 insertData
* (2)显示所有数据 showData
* (3)在指定位置处插入数据 insertAtArray
* (4)查询是否能被3整除 divThree
*
* @author yan
*
*/
public class DataManage {
/**
* 从键盘接收数据
*
* @return 接收数据的数组
*/
public int[] insertData() {
// 定义一个长度为10的数组
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 {
// nextInt方法用于从键盘接收整型数据
a[i] = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入的数据格式有误,不能有非数字!");
// 将有问题的键盘监听重新连接起来 阻止后面直接报错 用next()继续去接收数据
sc.next();
// 当输入错误时重新输入
i--;
}
}
return a;
}
/**
* 显示数组中元素的内容
*
* @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 要插入的位置,从0开始
*/
public void insertAtArray(int[] a, int n, int k) {
// 注意从最后一个数据开始移动 避免数据覆盖
// 如果数据溢出 将倒数第二个数据覆盖最后一个
for (int i = a.length - 1; i > k - 1; i--) {
a[i] = a[i - 1];
}
// 赋值操作
a[k - 1] = n;
}
/**
* 输入数组中能被3整除的元素
*
* @param a
*/
public void divThree(int[] a) {
String str = "";
int count = 0;
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) {
DataManage dm = new DataManage();
Scanner sc = new Scanner(System.in);
int input = 0;
int[] a = null;
int n = 0, k = 0;// n表示要插入的数据,k表示插入的位置
while (true) {
// 循环提示
dm.notice();
// 进行提示
System.out.println("请输入对应的数字进行操作");
try {
input = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入的数据格式有误,不能有非数字!");
sc.next();
continue;
}
// 针对0键单独处理退出程序
if (input == 0) {
System.out.println("退出程序!");
break;
}
switch (input) {
case 1: {
// 插入数据
a = dm.insertData();
// 显示数据
System.out.println("数组元素为:");
dm.showData(a, a.length - 1);
break;
}
case 2: {
// 显示所有数据
if (a != null) {
System.out.println("数组元素为:");
if (a[a.length - 1] == 0) {
// 如果数组的最后一个元素为0 说明还没有插入数据 因此不显示最后一个元素
dm.showData(a, a.length - 1);
} else {
dm.showData(a, a.length);
}
} else {
System.out.println("还未在数组中插入数据,请重新选择操作!");
}
break;
}
case 3: {
// 在指定位置处插入数据
if (a != null) {
System.out.println("请输入要插入的数据:");
try {
n = sc.nextInt();
System.out.println("请输入要插入数据的位置:");
k = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入的数据格式有误,不能有非数字!");
sc.next();
break;
}
dm.insertAtArray(a, n, k);
dm.showData(a, a.length);
} else {
System.out.println("还未在数组中插入数据,请重新选择操作!");
}
break;
}
case 4: {
// 查询数组中能被3整除的元素
if (a != null) {
dm.divThree(a);
} else {
System.out.println("还未在数组中插入数据,请重新选择操作!");
}
break;
}
// 输入的菜单选项不合法
default:
System.out.println("输入无效!");
}
}
}
}