5判断循环数组综合练习案例(迷你DVD)
Posted 红酒人生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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("序号\t状态\t名称\t借出日期\t借出次数"); 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)+"\t"+dvdState+"\t" 90 +name[i]+"\t"+dvdDays+"\t"+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 }
以上是关于5判断循环数组综合练习案例(迷你DVD)的主要内容,如果未能解决你的问题,请参考以下文章