JAVA基础综合案例(数据管理系统)

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添加数据");
		}
	}
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值