5、判断、循环、数组综合练习案例(迷你DVD)

迷你dvd代码如下:

  1 package com.manager;
  2 
  3 import java.util.Scanner;
  4 
  5 public class DVDManage {
  6     public static void main(String[] args) {
  7         Scanner input=new Scanner(System.in);
  8         
  9         //1.定义dvd相关数组
 10         String[] name=new String[6]; //DVD名称
 11         int[] state=new int[6]; //状态 ,0借出,    1未借
 12         int[] days=new int[6]; //借出日期(1-31) 31不能借阅,(当月借当月还)
 13         int[] count=new int[6]; //借出次数
 14         
 15         //2.初始化操作给数组赋值(3个)...
 16         //2.1 第一个dvd初始化
 17          name[0]="罗马假日";
 18         state[0]=0;
 19          days[0]=1;
 20         count[0]=15;
 21         
 22         //2.2 第2个dvd初始化
 23          name[1]="西游记";
 24         state[1]=1;
 25         count[1]=15;
 26         
 27         //2.3 第3个dvd初始化
 28          name[2]="浪漫满屋";
 29         state[2]=1;
 30         count[2]=30;
 31         
 32         //3.控制菜单循环变量初始化
 33         boolean isMenu=false;
 34         do{
 35             System.out.println("欢迎使用迷你DVD管理器");
 36             System.out.println("----------------------");
 37             System.out.println("1.新增DVD");
 38             System.out.println("2.查看DVD");
 39             System.out.println("3.删除DVD");
 40             System.out.println("4.借出DVD");
 41             System.out.println("5.归还DVD");
 42             System.out.println("6.退出DVD");
 43             System.out.println("----------------------");
 44             System.out.print("请选择:");
 45             int menuNum=input.nextInt();
 46             switch(menuNum){
 47             case 1:
 48                 //1.1 新增,给数组赋值
 49                 System.out.println("-->新增DVD");
 50                 System.out.print("请输入DVD名称:");
 51                 String dvdName=input.next();
 52                 
 53                 //1.2.定义判断dvd是否已经加满货架的标识符变量(false没有)
 54                 boolean flag1=false;
 55                 
 56                 //1.3.循环数组找到第一个空位置进行添加
 57                 for (int i = 0; i < name.length; i++) {
 58                     //1.3.1找到要添加的空位置
 59                     if(name[i]==null){
 60                         name[i]=dvdName;
 61                         System.out.println("新增《"+dvdName+"》成功!");
 62                         flag1=true; //该空间已经添加dvd
 63                         break;
 64                     }
 65                 }
 66                 
 67                 //1.4.判断货架是否已满
 68                 if(!flag1){
 69                     System.out.println("抱歉,新增《"+dvdName+"》失败!货架已满!");
 70                 }
 71                 System.out.println("******************************************");
 72                 break;
 73             case 2:
 74                 //2.1 查看(循环)
 75                 System.out.println("-->查看DVD");
 76                 System.out.println("序号	状态	名称	借出日期	借出次数");
 77                 
 78                 //2.2 循环打印dvd信息
 79                 for (int i = 0; i < name.length; i++) {
 80                     //2.2.1 只打印有内容的dvd盒子信息,不打印空dvd盒子内容
 81                     if(name[i]!=null){
 82                         //2.2.1.1 定义是否可借出的标识符变量
 83                         String dvdState=(state[i]==1?"可借阅":"已借出");
 84                         
 85                         //2.2.1.2 定义可以借阅多少天的标识符变量
 86                         String dvdDays=(days[i]==0?"":(days[i]+"号"));
 87                         
 88                         //2.2.1.3 打印DVD信息
 89                         System.out.println((i+1)+"	"+dvdState+"	"
 90                          +name[i]+"	"+dvdDays+"	"+count[i]+"次数");
 91                     }
 92                 }
 93                 break;
 94             case 3:
 95                 //3.1删除(移位)
 96                 System.out.println("-->删除DVD");
 97                 System.out.print("请输入要删除的DVD名字:");
 98                 String delete=input.next();
 99                 
100                 //3.2定义是否根据控制台输入的名字找到匹配项的标识符变量,默认没找到
101                 boolean flag=false;
102                 
103                 //3.3定义要删除DVD的位置
104                 int index=-1;
105                 
106                 //3.4循环找到删除的位置
107                 for (int i = 0; i < name.length; i++) {
108                     if(name[i]!=null && delete.equals(name[i]) && state[i]==1){
109                         flag=true; //根据名字找到匹配DVD
110                         index=i; //找到删除的位置
111                         System.out.println("DVD删除成功!");
112                         break;
113                     }else if(name[i]!=null && delete.equals(name[i]) && state[i]==0){
114                         flag=true;//根据名字找到匹配DVD
115                         System.out.println("该DVD已被借出,目前无法删除!");
116                         break;
117                     }
118                 }
119                 
120                 //3.5根据找到的位置删除
121                 if(index!=-1){
122                     //循环将删除位置之后的所有元素前移一位
123                     for (int j = index; j < name.length; j++) {
124                         //如果删除的是最后一个索引位置则元素不进行移动
125                         if(j!=name.length-1){
126                             name[j]=name[j+1];
127                             state[j]=state[j+1];
128                             days[j]=days[j+1];
129                         }
130                         //如果删除的是最后一位,则将最有一位置空null
131                         name[name.length-1]=null;
132                     }
133                 }
134                 //3.6 没有找到匹配的DVD名字项
135                 if(!flag){
136                     System.out.println("没有根据名字找到匹配的DVD信息!!");
137                 }
138                 System.out.println("******************************************");
139                 break;
140             case 4:
141                 //借出(改变dvd的状态0)
142                 System.out.println("-->借出DVD");
143                 System.out.print("请输入DVD名称:");
144                 String want=input.next();
145                 
146                 //循环判断要借阅的DVD是否存在
147                 for (int i = 0; i < name.length; i++) {
148                     if(name[i]==null){
149                         System.out.println("没有找到匹配的DVD信息!!");
150                     }else if(want.equals(name[i]) && state[i]==1){
151                         //找到匹配可借
152                         //改变DVD借阅状态为已借阅
153                         state[i]=0;
154                         System.out.print("请输入要借阅的日期:");
155                         days[i]=input.nextInt();
156                         
157                         //循环判断用户输入的借阅天数,只能借阅1-31天,r
158                         //如果不满足条件则让用户循环输入天数直到正确为止
159                         while(days[i]<1 || days[i]>31){
160                             System.out.print("必须输入大于等于1且小于等于31的数字,请重新输入:");
161                             days[i]=input.nextInt();
162                         }
163                         
164                         System.out.println("借出《"+want+"》成功!");
165                         
166                         //借出次数累加
167                         count[i]++; 
168                         break;
169                     }else if(want.equals(name[i]) && state[i]==0){
170                         //找到匹配已被借出
171                         System.out.println("《"+want+"》已被借出!");
172                         break;
173                     }
174                 }
175                 System.out.println("******************************************");
176                 break;
177             case 5:
178                 //归还(改变dvd的状态1)
179                 System.out.println("-->归还DVD");
180                 //定义借阅租金
181                 int charge=0;
182                 System.out.print("请输入DVD的名称:");
183                 want=input.next();
184                 for (int i = 0; i < name.length; i++) {
185                     if(name[i]==null){
186                         System.out.println("没有找到DVD匹配数据!");
187                     }else if(want.equals(name[i]) && state[i]==0){
188                         state[i]=1;
189                         System.out.print("请输入归还时日期:");
190                         int redate =input.nextInt();
191                         //循环判断归还日期不能小于借出日期,也不能大于31,否则重新输入
192                         while(redate<days[i] || redate>31){
193                             
194                             if(redate<days[i]){
195                                 System.out.print("归还日期不能小于借出日期,请重新输入:");
196                             }else{
197                                 System.out.print("一个月只能有31天,请重新输入:");
198                             }
199                             //循环输入正确归还日期(1-31)
200                             redate=input.nextInt();
201                         }
202                         //计算出借阅的租金
203                         charge=redate-days[i];
204                         System.out.print("归还《"+want+"》成功!");
205                         System.out.print("借出的日期为:"+days[i]+"号");
206                         System.out.println("归还日期为:"+redate+"号");
207                         System.out.println("应付租金(元):"+charge);
208                         //归还后借阅的日期清零
209                         days[i]=0;
210                         break;
211                     }else if(want.equals(name[i]) && state[i]==1){
212                         //找到匹配项但是没借出
213                         System.out.println("该《"+want+"》DVD没有被借出!无法进行归还操作!");
214                         break;
215                     }
216                 }
217                 System.out.println("******************************************");
218                 break;
219             case 6:
220                 //退出(系统退出)
221                 System.exit(1);
222                 break;
223             default:
224                 System.out.println("菜单数字选择错误!!");
225             }
226         
227            //改变do-while循环条件  
228           System.out.print("输入0返回:");
229           int num=input.nextInt();
230           if(num==0){
231               isMenu=true;
232           }else{
233               System.out.println("菜单编号输入错误!!");
234           }
235         }while(isMenu);
236         
237         
238     }
239 
240 }
原文地址:https://www.cnblogs.com/holly8/p/5645241.html