Java实现快递e栈

  1. 切换用户界面
  2. 快递信息的保存
  3. 各个子功能的实现

今天的任务,是完成快递 E 栈系统。
经过了变量,流程控制,数组三部分的学习,让我们通过一个小项目来巩固这些技能点吧

一、java中equals使用方法

equals:
操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同,且区分大小写

二、使用步骤

1.创建数组

代码如下(示例):

String[] ordersId = new String[3];//创建快递单号
		String[] names = new String[3];//创建快递公司名称
		int[] codes = new int[3];//取件码

2.代码

Scanner input = new Scanner(System.in); //输入
    System.out.println("请输入您的身份:1-快递员        2-用户");
    int num = input.nextInt(); //接收控制台输入的数字
    switch(num) {
    case 1:   //这是快递员的操作
    	System.out.println("请选择操作:1-存快递     2-删除快递    3-修改快递     4-查看所有快递信息");
    	int num2 = input.nextInt();
    	switch(num2) {
    	case 1://存快递
    		//遍历数组是否还有位置能添加
    		int indes = -1;//该变量用来判断快递柜是否存满
    		for(int i=0;i<ordersId.length;i++) {
    			if(ordersId[i] == null) {
    				indes = i;
    				break;//遇到一个就跳出循环
    			}
    		}
    		//判断快递柜是否已满,并进行相关操作
    		if(indes == -1) {
    			System.out.println("快递柜已满,无法继续存入");
    		}else{
    			//如果有位置,则存入数据
    			//录入单号
    			System.out.println("请输入快递单号:");
    			String nums1 = input.next();
    			ordersId[indes] = nums1;
    			//录入公司名称
    			System.out.println("请输入公司名称:");
    			String copmds = input.next();
    			ordersId[indes] = copmds;
    			//随机生成1-1000取件码,用Math.random()*1000来表示
    			int code = (int)(Math.random()*1000)+1;
    			codes[indes] = code;
    			System.out.println("此快递已经存入,取件码是:"+code);
    		}
    		break;
    	case 2://删除快递
    		System.out.println("请输入要删除的快递单号:");
    		String nums2 = input.next();
    		int indes1 = -1;//该变量用来判断是否匹配到对应快递单号
    		for(int i=0;i<ordersId.length;i++) {
    			if(ordersId[i].equals(nums2)) {
    				indes1 = i;
    				break;//匹配到就跳出循环
    			}
    		}
    		//判断是否匹配到快递单号,并进行操作
    		if(indes1 == -1) {
    			System.out.println("该快递单号不存在!");
    		}else{
    			//清空对应的值
    			ordersId[indes1] = null;
    			names[indes1] = null;//也是可删可不删,主要依据ordersId是否为null判断
    			codes[indes1] = 0;
    			System.out.println("已删除该快递");
    		}
    		break;
    	case 3://修改快递信息
    		System.out.println("请输入要修改的快递单号:");
    		String nums3 = input.next();
    		int indes2 = -1;
    		for(int i=0;i<ordersId.length;i++) {
    			if(ordersId[i].equals(nums3)) {
    				indes2 = i;
    				break;
    				
    			}
    			if(indes2 == -1) {
    				System.out.println("该快递单号不存在!");
    			}else {
    				//修改对应的快递信息
    				System.out.println("请输入新的快递单号:");
    				String newnums = input.next();
    				ordersId[indes2] = newnums;
    				//将新公司名称赋值给数组中对应位置
    				System.out.println("请输入新的公司名称:");
    				String newcopmds = input.next();
    				names[indes2] = newcopmds;
    				int newcode = (int)(Math.random()*1000)+1;
    				codes[indes2] = newcode;
    				System.out.println("您已修改成功!"+"新的取件码"+newcode);
    			}
    			break;
    		}
    	case 4://查看操作
    		int indes3 = -1;
    		for(int i=0;i<ordersId.length;i++) {
    			if(ordersId[i]!=null) {
    				indes3 = 0;
    				break;
    			}
    		}
    		if(indes3 == -1) {
    			System.out.println("快递柜为空,暂无快递");
    		}else {
    			System.out.println("所有快递信息如下:");
    			System.out.println("快递单号\t公司名称\t取件码");
    			for(int i=0;i<ordersId.length;i++) {
    				if(ordersId[i]!=null) {
    					System.out.println(ordersId[i]+"\t"+names[i]+"\t"+codes[i]);
    				}
    			}
    		}
    	}
    	break;//结束case4,跳出switch(num2)语句
    case 2:  //这是用户在操作
    	System.out.println("请输入取件码:");
    	int does1 = input.nextInt();
    	int indes4 = -1;
    	for(int i=0;i<ordersId.length;i++) {//寻找匹配的取件码
    		if(codes[i] !=0 && codes[i] == does1) {
    			indes4 = i;
    			break;
    		}
    	}
    	if(indes4 == -1) {
    		System.out.println("未找到该快递");
    	}else{
    		ordersId[indes4] = null;//取快递
    		names[indes4] = null;  //两个可删可不删
    		codes[indes4] = 0;
    		System.out.println("您已取件成功!");
    	}
    	break;
    }

2.出现的问题求解

53 			if(ordersId[i].equals(nums2)) {
Exception in thread “main” java.lang.NullPointerException
 at doy04.Demo1.main(Demo1.java:53)

总结