当前位置: 代码迷 >> J2SE >> 把数据存不进数组,传递异常
  详细解决方案

把数据存不进数组,传递异常

热度:20   发布时间:2016-04-24 00:46:53.0
把数据存不进数组,传递错误
Java code
public String [] dvd = new String [50] ; //储存DVD信息    public int[] Lendstate = new int [50] ;//借出状态,0为已借出,1为可借出    public String[] data = new String [50];//定义日期    Scanner sc = new Scanner (System.in);    //借出DVD        public void lentdvd (){        String lentname="";        boolean zhi = true;        System.out.println("可以借出的DVD:");        for (int w=0;w<dvd.length;w++){            if (dvd[w]!=null){            System.out.println(dvd[w]);            }        }        System.out.println("请输入需要借出的DVD:");                //for (int t=0;t<data.length;t++){            lentname = sc.next();            int random = (int)(Math.random()*49);            System.out.println("请输入借出的日期(以-号分隔,参照:2012-06-01):");            String riqi = sc.next();            if (data[random]==null){                data[random]=riqi;//////////////////无法将这个值放入数组,而且在下面无法获取            }        for (int r=0;r<dvd.length;r++){            if (lentname.equalsIgnoreCase(dvd[r])&&Lendstate[r]==1){                System.out.println("借出成功!");                //Lendstate=1; //定义借出成功状态                Lendstate[r]=0;                zhi=true;            }            //}        }        if (zhi==false){            System.out.println("借出失败");            System.out.println();            }                for (int q=0;q<data.length;q++){            if (data[q]!=null){                System.out.println(data[q]);            }        }                }                /////////////////////////////////////////////////////////归还DVD        public void returndvd (){        boolean zhi = true;        System.out.println("请输入DVD名称:");        String returnName = sc.next();                for (int c=0;c<data.length;c++){            if (data[c]!=null){                System.out.println(data[c]);            }        }                        System.out.println("请输入归还的日期(以-号分隔,参照:2012-06-01):");        String sReturn =  sc.next();//归还的日期        String sBorrow="";        for (int e=0;e<dvd.length;e++){            if ((returnName.equalsIgnoreCase(dvd[e]))&&Lendstate[e]==0&&data[e]!=null){                zhi=true;                sBorrow=data[e];/////////////这一步有错,但按照逻辑来说是没错的            }        }        if (zhi==true){                        final double MILLS_TO_DAY = 1000d * 60 * 60 * 24;            // 可以加一些格式验证            SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");            Date borrowDate = null;            Date returnDate = null;                try                {                    borrowDate = formater.parse(sBorrow);                    returnDate = formater.parse(sReturn);                }                                    catch (ParseException e)            {                e.printStackTrace();            }                    //else{                                    //System.out.println("归还失败!");                        System.out.println("供需支付(元):"+(returnDate.getTime() - borrowDate.getTime())/ MILLS_TO_DAY);                    }}


在借出DVD的时候,录入日期,可以把数据存入到数组。但在归还DVD的时候不能调用,提示是空串,高手帮忙解决下,谢谢了、

------解决方案--------------------
当然不对了,借出的时候,日期和DVD的数组元素位置并不一致,也就是日期是随机存入数组的某个位置,所以还DVD的时候,和DVD对应的位置不一定有日期
Java code
int random = (int)(Math.random()*49); //不知道这个随机的意义是什么            System.out.println("请输入借出的日期(以-号分隔,参照:2012-06-01):");            String riqi = sc.next();            //if (data[random]==null){            //    data[random]=riqi;//这里是随机保存,和DVD的位置不一致            //}          for (int r=0;r<dvd.length;r++){            if (lentname.equalsIgnoreCase(dvd[r])&&Lendstate[r]==1){                 System.out.println("借出成功!");                //Lendstate=1; //定义借出成功状态                Lendstate[r]=1;                data[r] = riqi; //在这里设置借书日期                zhi=true;            }            //}        }
  相关解决方案