Java实现快递e栈
- 切换用户界面
- 快递信息的保存
- 各个子功能的实现
今天的任务,是完成快递 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)
总结