Java基础学习中数组遇到的问题及解决方式

       数组遇到的问题及解决方式

        在做一个简单的快递e栈的综合练习中,我遇到的一个难点就在于只使用数组来存取数据。原问题是需要存取快递单号,快递公司以及取件码,快递员可操作快递单号,快递公司,自动生成取件码,用户只可操作取件码。

        在将快递单号,快递公司,以及取件码一一对应时我遇到了如果将此三个属性存到一个数组中,于是我建立了三个数组,分别存取存取这三个属性,由快递单号作为三个数组的下标进行对取件码以及公司的一一对应。

        这个时候又遇到了新的问题:我将三个数组的定义放在我的switch判断中的case中时,信息并没有存下来。是由于作用域的问题,于是我将三个数组的定义放在了判断之前,作为主函数对下面的全局变量。于是这个问题就解决了,最后的代码如下:

        数组定义的位置

public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		//快递单号数组
		int[] trackingNumber = new int[10000];
		//取件码数组
		int[] number = new int[10000];
		//公司名称数组
		String[] names = new String[10000];

快递进行存取的相关代码:

case 1:{
						System.out.println("请输入快递单号");
						int numAdd = input.nextInt();
						System.out.println("请输入公司名称");
						String nameAdd = input.next();
						boolean flag = true;
						//定义一个生成的取件码
						int numberAdd = (int)(Math.random()*10000);
						//判断取件码是否重复,如果重复则重新生成取件码
						while(flag) {
							for(int i = 0;i<number.length;i++) {
								if(numberAdd == number[i]) {
									numberAdd = (int)(Math.random()*10000);
									break;
								}
								if(i==number.length-1) {
									if(numberAdd!=number[i]){
										flag = false;
									}
								}
							}
						}						
		
						//快递单号数组
						trackingNumber[numAdd] = numAdd;
						//公司名称数组
						names[numAdd] = nameAdd;
						//取件码数组
						number[numAdd] = numberAdd;												
						System.out.println("快递已存入,取件码是:"+number[numAdd]);
						orderIn = false;
						break;

补充:

        在进行存取的时候我们需要考虑随机产生的取件码是否会重复,如果重复我们就需要重新自动生成一个取件码,直到没有重复过的取件码才算一一配置成功。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kepnosian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值