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的时候不能调用,提示是空串,高手帮忙解决下,谢谢了、

解决方案 »

  1.   

    当然不对了,借出的时候,日期和DVD的数组元素位置并不一致,也就是日期是随机存入数组的某个位置,所以还DVD的时候,和DVD对应的位置不一定有日期
    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;
                }
                //}
            }
    另外,LZ的zhi标志的初始值是true,就算不进入循环也是true,后面的if (zhi==true)判断一样会执行的,所以应该设置初始值为false