package hello;
import java.util.InputMismatchException;
import java.util.Scanner;
/**
*
* 需求分析:
* 1 添加数据
* 2 查看数据
* 3 修改数据
* 4 能被3整除的数据
* 0 退出程序
*
*/
public class DataManager {
public static void main(String[] args) {
int[] arr=new int[5];//初始化一个数组,长度自己决定
int[] newArr=null;
while (true) {
notice();
Scanner scanner=new Scanner(System.in);
int input=scanner.nextInt();
switch (input) {
case 1:
newArr=add(arr);
break;
case 2:
find(newArr);
break;
case 3:
boolean flag=insert(newArr);
if (flag) {
find(newArr);
}
break;
case 4:
divideThree(newArr);
break;
case 5:
System.exit(0);
break;
default:
break;
}
}
}
public static void notice() {
System.out.println();
System.out.println("************************");
System.out.println("---1 添加数据---");
System.out.println("---2 查看数据---");
System.out.println("---3 修改数据(0退出该模式)---");
System.out.println("---4 查看能被3整除的数据---");
System.out.println("---5 退出---");
System.out.println("************************");
}
//1 添加数据
public static int[] add(int[] arr) {
Scanner sc=new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入第"+(i+1)+"个数值");
try {
arr[i]=sc.nextInt();//依次输入数值,直到输满指定的数组长度
} catch (InputMismatchException e) {
System.out.println("数据格式有误,请输入整数");
sc.next();//跳出死循环
i--;//同时i减一,让用户重新输入该位置上的数值。
}
}
return arr;//返回,用作后续对该数组的操作。
}
//2 查看数据
public static void find(int[] arr) {
try {//避免用户还没插入数组就想查询,那样会抛出空指针异常,处理一下。
if (arr.length!=0) {
System.out.println("数据依次是: ");
for (int num : arr) {
System.out.print(num+" ");
}
}
} catch (NullPointerException e) {
System.err.println("暂无数据,请按1添加数据");
}
}
//3 修改数据
public static boolean insert(int[] arr) {
boolean flag=false;
Scanner sc=new Scanner(System.in);
while (true) {//使用while循环,让用户可持续的插入数值
System.out.println("请问要在哪个位置插入数值");
try {//将整体包裹在try之下,防止用户输入非整数
int index=sc.nextInt();
if (index==0) {//如果用户输入的是0,则退出该模式(插入模式)
break;
}
if (0<index&&index<=arr.length) {
System.out.println("请输入要插入的数值");
int value=sc.nextInt();
//要从后往前数组偏移,否则从前往后,前面一个值给后面的值,会覆盖,这个思路很重要。
for (int i = arr.length-1; i>index-1; i--) {
arr[i]=arr[i-1];//前面的值赋给后面
}
arr[index-1]=value;//等到数组偏移结束再将用户指定位置要赋予的值添加进数组。
flag=true;//改变状态,允许调用find方法查看修改后的结果,让用户明确是否修改成功
} else {
System.out.println("请输入0到"+arr.length+"之间的位置");
flag=false;//否则不允许调用find方法
}
} catch (InputMismatchException e) {
System.out.println("数据格式有误,请输入整数");
sc.next();//跳出死循环
}
}
return flag;//返回
}
//4 查看能被3整除的数据
public static void divideThree(int[] arr) {
try {//和查询整个数组的值一个道理,避免用户还没插入数组就想查询,那样会抛出空指针异常,处理一下。
if (arr.length!=0) {
System.out.print("能被3整除的数字: ");
for (int num : arr) {
if (num%3==0) {
System.out.print(num+" ");
}
}
}
} catch (NullPointerException e) {
System.out.println("暂无数据,请按1添加数据");
}
}
}
JAVA基础综合案例(数据管理系统)
最新推荐文章于 2024-07-13 15:29:04 发布