62,614
社区成员
发帖
与我相关
我的任务
分享
import java.util.Scanner;
public class Page341 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
DVD d=new DVD();
DVD[] sd=new DVD[10];
Menu m=new Menu();
m.initalDvd(sd);//初始化
m.showMenu();//菜单展示
boolean cont=true;
int input=0;
while(cont){
System.out.print("请选择:");
input=sc.nextInt();
switch(input){
case 1:
System.out.println("--------> 新增DVD");
m.addMenu(sd);
m.startMenu();
break;
case 2:
System.out.println("--------> 查看DVD");
m.lookBookMenu(sd);
m.startMenu();
break;
case 3:
System.out.println("--------> 删除DVD");
m.deleteBookMenu(sd);
m.startMenu();
break;
case 4:
System.out.println("--------> 借出DVD");
m.lendBookMenu(sd);
m.startMenu();
break;
case 5:
System.out.println("--------> 归还DVD");
m.returnBookMenu(sd);
m.startMenu();
break;
case 6:
System.out.println("谢谢使用!");
cont=false;
}
}
}
public class DVD {
String name;//书名
String lendTime;//借出时间
int state=0;//书籍借出与否的状态
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Menu {
Scanner sc=new Scanner(System.in);
public void showMenu(){
System.out.println("欢迎使用迷你DVD管理器\n"+
"------------------------------------------------");
System.out.println("1.新增DVD\n"+
"2.查看DVD\n"+
"3.删除DVD\n"+
"4.借出DVD\n"+
"5.归还DVD\n"+
"6.退出");
System.out.println("------------------------------------------------");
}
//初始化数组
public void initalDvd(DVD[] sd) {
for (int i = 0; i < 3; i++) {
sd[i]=new DVD();
System.out.print("请输入书名:");
sd[i].name=sc.next();
System.out.print("请输入该书的状态(0,未借出 1,借出):");
sd[i].state=sc.nextInt();
if(sd[i].state==1){
System.out.println("请输入时间:");
sd[i].lendTime=sc.next();
}
}
}
//增加DVD
public void addMenu(DVD[] sd) {
boolean condition=false;
String newBookName="";
do {
System.out.println("请输入DVD名称:");
newBookName=sc.next();
for (int i = 0; i < sd.length; i++) {
if(sd[i]==null){
sd[i]=new DVD();
sd[i].name=newBookName;
break;
}
}
for (int i = 0; i < sd.length; i++) {
if (sd[i] != null) {
System.out.print(sd[i].name + "");
}
}
System.out.println("是否增加书本?(y/n):");
if(sc.next().equals("n"))
condition=false;
else
condition=true;
} while (condition);
System.out.println("新增《"+newBookName+"》成功! ");
System.out.println("**************************************************");
}
//查看DVD
public void lookBookMenu(DVD[] sd) {
System.out.println("序号\t状态\t名称\t借出日期");
for (int i = 0; i < sd.length; i++) {
if((sd[i]!=null)&&(sd[i].state==1))
System.out.print((i+1)+"\t"+"已借出\t"+"《"+sd[i].name+"》\t"+sd[i].lendTime);
if((sd[i]!=null)&&(sd[i].state==0))
System.out.print((i+1)+"\t"+"可借\t"+"《"+sd[i].name+"》\t");
if(sd[i]!=null)
System.out.println();
}
}
//删除DVD
public void deleteBookMenu(DVD[] sd) {
boolean condition=false;
String name="";
do {
System.out.println("请输入DVD名称:");
name = sc.next();
for (int i = 0; i < sd.length; i++) {
if ((sd[i] != null) && (sd[i].name.equals(name))
&& (sd[i].state == 0)){
for (int j = i;; j++) {
if(sd[j+1]==null)
break;
sd[j].name=sd[j+1].name;
}
}
if ((sd[i] != null) && (sd[i].name.equals(name))
&& (sd[i].state == 1))
System.out.println(sd[i].name + "为借出状态,不能删除!");
}
for (int i = 0; i < sd.length; i++) {
if(sd[i].name!=null)
if(sd[i].name==(sd[i+1].name)){
sd[i+1].name="";//这里赋null有BUG,带求解!
break;
}
}
for (int i = 0; i < sd.length; i++) {
if(sd[i]!=null)
System.out.print(sd[i].name + " ");
}
System.out.println("是否成功删除?(y/n):");
if(sc.next().equals("y"))
condition=false;
else
condition=true;
} while (condition);
System.out.println("删除《"+name+"》成功! ");
System.out.println("**************************************************");
}
//借出DVD
public void lendBookMenu(DVD[] sd) {
boolean condition=false;
String name="",time="";
do {
System.out.print("请输入DVD名称:");
name = sc.next();
System.out.print("请输入借出日期(年-月-日):");
time = sc.next();
for (int i = 0; i < sd.length; i++) {
if ((sd[i].name.equals(name)) && (sd[i].state != 1)) {
sd[i].lendTime = time;
sd[i].state = sd[i].state + 1;
System.out.println("借出《" + name + "》成功!");
break;
}
if ((sd[i].name.equals(name)) && (sd[i].state == 1)){
System.out.print("该书已被借出!");
condition=true;
}
}
} while (condition);
System.out.println("**************************************************");
}
//归还DVD
public void returnBookMenu(DVD[] sd) {
String name="",time="";
double pay=0;
System.out.print("请输入DVD名称:");
name = sc.next();
System.out.print("请输入归还日期(年-月-日):");
time = sc.next();
for (int i = 0; i < sd.length; i++) {
if(((sd[i].state-=1)==0)&&(sd[i].name.equals(name))){
System.out.println("归还《"+sd[i].name+"》成功!");
break;
}
}
for (int i = 0; i < sd.length; i++) {
if(sd[i].name.equals(name)){
System.out.print("借出日期为:"+sd[i].lendTime+"\n");
System.out.print("归还日期为:"+time);
pay=charge(sd[i].lendTime,time)*1;
System.out.println("应付租金(元):"+pay);
break;
}
}
System.out.println("**************************************************");
}
//计算时间差
public long charge(String dstr1,String dstr2){
long charge=0;
SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");
try{
Date d1=sd.parse(dstr1);
Date d2=sd.parse(dstr2);
charge=(d2.getTime()-d1.getTime())/(24*60*60*1000);
}catch(ParseException e){
e.printStackTrace();
}
return charge;
}
public void startMenu(){
System.out.print("输入0返回主菜单:");
if(sc.nextInt()==0)
showMenu();
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Menu {
Scanner sc=new Scanner(System.in);
public void showMenu(){
System.out.println("欢迎使用迷你DVD管理器\n"+
"------------------------------------------------");
System.out.println("1.新增DVD\n"+
"2.查看DVD\n"+
"3.删除DVD\n"+
"4.借出DVD\n"+
"5.归还DVD\n"+
"6.退出");
System.out.println("------------------------------------------------");
}
//初始化数组
public void initalDvd(DVD[] sd) {
for (int i = 0; i < 3; i++) {
sd[i]=new DVD();
System.out.print("请输入书名:");
sd[i].name=sc.next();
System.out.print("请输入该书的状态(0,未借出 1,借出):");
sd[i].state=sc.nextInt();
if(sd[i].state==1){
System.out.println("请输入时间:");
sd[i].lendTime=sc.next();
}
}
}
//增加DVD
public void addMenu(DVD[] sd) {
boolean condition=false;
String newBookName="";
do {
System.out.println("请输入DVD名称:");
newBookName=sc.next();
for (int i = 0; i < sd.length; i++) {
if(sd[i]==null){
sd[i]=new DVD();
sd[i].name=newBookName;
break;
}
}
for (int i = 0; i < sd.length; i++) {
if (sd[i] != null) {
System.out.print(sd[i].name + "");
}
}
System.out.println("是否增加书本?(y/n):");
if(sc.next().equals("n"))
condition=false;
else
condition=true;
} while (condition);
System.out.println("新增《"+newBookName+"》成功! ");
System.out.println("**************************************************");
}
//查看DVD
public void lookBookMenu(DVD[] sd) {
System.out.println("序号\t状态\t名称\t借出日期");
for (int i = 0; i < sd.length; i++) {
if((sd[i]!=null)&&(sd[i].state==1))
System.out.print((i+1)+"\t"+"已借出\t"+"《"+sd[i].name+"》\t"+sd[i].lendTime);
if((sd[i]!=null)&&(sd[i].state==0))
System.out.print((i+1)+"\t"+"可借\t"+"《"+sd[i].name+"》\t");
if(sd[i]!=null)
System.out.println();
}
}
//删除DVD
public void deleteBookMenu(DVD[] sd) {
boolean condition=false;
String name="";
do {
System.out.println("请输入DVD名称:");
name = sc.next();
for (int i = 0; i < sd.length; i++) {
if ((sd[i] != null) && (sd[i].name.equals(name))
&& (sd[i].state == 0)){
for (int j = i;; j++) {
if(sd[j+1]==null)
break;
sd[j].name=sd[j+1].name;
}
}
if ((sd[i] != null) && (sd[i].name.equals(name))
&& (sd[i].state == 1))
System.out.println(sd[i].name + "为借出状态,不能删除!");
}
for (int i = 0; i < sd.length; i++) {
if(sd[i].name!=null)
if(sd[i].name==(sd[i+1].name)){
sd[i+1].name=null;//这里赋null有BUG,带求解!
break;
}
}
for (int i = 0; i < sd.length; i++) {
if(sd[i]!=null)
System.out.print(sd[i].name + " ");//这里仍然打印出null
}
System.out.println("是否成功删除?(y/n):");
if(sc.next().equals("y"))
condition=false;
else
condition=true;
} while (condition);
System.out.println("删除《"+name+"》成功! ");
System.out.println("**************************************************");
}
//借出DVD
public void lendBookMenu(DVD[] sd) {
boolean condition=false;
String name="",time="";
do {
System.out.print("请输入DVD名称:");
name = sc.next();
System.out.print("请输入借出日期(年-月-日):");
time = sc.next();
for (int i = 0; i < sd.length; i++) {
if ((sd[i].name.equals(name)) && (sd[i].state != 1)) {
sd[i].lendTime = time;
sd[i].state = sd[i].state + 1;
System.out.println("借出《" + name + "》成功!");
break;
}
if ((sd[i].name.equals(name)) && (sd[i].state == 1)){
System.out.print("该书已被借出!");
condition=true;
}
}
} while (condition);
System.out.println("**************************************************");
}
//归还DVD
public void returnBookMenu(DVD[] sd) {
String name="",time="";
double pay=0;
System.out.print("请输入DVD名称:");
name = sc.next();
System.out.print("请输入归还日期(年-月-日):");
time = sc.next();
for (int i = 0; i < sd.length; i++) {
if(((sd[i].state-=1)==0)&&(sd[i].name.equals(name))){
System.out.println("归还《"+sd[i].name+"》成功!");
break;
}
}
for (int i = 0; i < sd.length; i++) {
if(sd[i].name.equals(name)){
System.out.print("借出日期为:"+sd[i].lendTime+"\n");
System.out.print("归还日期为:"+time);
pay=charge(sd[i].lendTime,time)*1;
System.out.println("应付租金(元):"+pay);
break;
}
}
System.out.println("**************************************************");
}
//计算时间差
public long charge(String dstr1,String dstr2){
long charge=0;
SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");
try{
Date d1=sd.parse(dstr1);
Date d2=sd.parse(dstr2);
charge=(d2.getTime()-d1.getTime())/(24*60*60*1000);
}catch(ParseException e){
e.printStackTrace();
}
return charge;
}
public void startMenu(){
System.out.print("输入0返回主菜单:");
if(sc.nextInt()==0)
showMenu();
}
}
public class Test {
public static void main(String[] args) {
String[] str = {"a",null,"bb"};
System.out.println(str[1]);
System.out.println(str == null);
System.out.println(str[1]==null);
}
}
输出结果为null,false,true
所以需要修改你代码的地方为
1、for (int i = 0; i < sd.length; i++) {
if(sd[i].name!=null)
if(sd[i].name.equals(sd[i+1].name)){
sd[i+1].name=null;//这里赋null有BUG,带求解!
break;
}
}
将=""改成=null,没有影响,因为如果是null,输出为null是正确输出
2、//查看DVD
public void lookBookMenu(DVD[] sd) {
System.out.println("序号\t状态\t名称\t借出日期");
for (int i = 0; i < sd.length; i++) {
if((sd[i].name!=null)&&(sd[i].state==1))
System.out.print((i+1)+"\t"+"已借出\t"+"《"+sd[i].name+"》\t"+sd[i].lendTime);
if((sd[i].name!=null)&&(sd[i].state==0))
System.out.print((i+1)+"\t"+"可借\t"+"《"+sd[i].name+"》\t");
if(sd[i].name!=null)
System.out.println();
}
}
数组肯定不为null,需要数组元素判断是否为null