三. 选择结构
1. 位运算
(了解)位运算和二进制有关
-
左移 <<
- 左移就相当于乘以2的几次方
-
右移 >>
- 右移就相当于除以2的几次方
package com.kgc; //左右移 public class Demo01 { public static void main(String[] args) { int a=10; System.out.println(a<<3); /* 10的二进制左移三位 00001010 01010000 64+16=80 */ System.out.println(a>>3); /* 10的二进制右移三位 00001010 00000001 0100 1 后面溢出 */ } }
2. 顺序结构
程序是按照顺序执行 , 从上往下
输出 , 从上往下
输入(实际工作中没用 , 为了练习使用在命令窗口输入一些数据,被程序获取)
-
步骤
-
先准备一个输入的工具
- (java.util.Scanner) input=new java.util.Scanner(System.in)
-
输入一个输入的入口
- nextInt() 整数数据的输入入口
- nextDouble() 浮点型数据的输入入口
- next() 字符串数据的输入入口
- 只能取空格前面的内容
- nextLine()字符串的输入入口
- 读取一行,空格也算
package com.kgc; public class Demo02 { public static void main(String[] args) { //准备一个输入的工具 java.util.Scanner input=new java.util.Scanner(System.in); //准备输入入口 System.out.print("请输入年龄:"); int age=input.nextInt(); System.out.println("您输入的年龄是:"+age); } }
-
3. 分支结构
-
单分支
-
语法 : if(条件){代码块}
-
原理 : 如果条件成立,则执行代码块; 如果条件不成立,则不执行代码块
-
特点 :
- 当if后大括号只有一行代码时,大括号可以省略,但是这行代码不能是变量的声明
- if是可以的嵌套的,if大括号里边可以写任意代码
- 变量的作用域,只能是当前大括号
package com.kgc; import java.util.Scanner; public class Demo03 { public static void main(String[] args) { //输入工具 Scanner sc = new Scanner(System.in); //输入入口 System.out.print("输入分数:"); double score = sc.nextDouble(); if (score>700){ System.out.println("奖励"); } } }
-
-
双分支
-
语法 : if(条件){代码块1}else{代码块2}
-
原理 : 条件成立执行代码块1,条件不成立执行代码块2
-
特点 :
- 如果代码中只有一行代码大括号可以省略
- 不能做变量的声明
- 大括号可以嵌套
//键盘输入一个数,判断是奇数还是偶数 package com.kgc; import java.util.Scanner; public class Demo04 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("输入一个整数:"); int number = sc.nextInt(); if (number%2==0){ System.out.println("偶数"); }else{ System.out.println("奇数"); } } }
-
-
多分支
-
语法 : if(条件1){代码块1}else if(条件2){代码块2}…else{代码块n}
-
原理 : 如果条件1成立执行代码块1,结束整个if ; 如果条件1不成立,判断条件2是否成立,如果不成立判断条件3 ; 如果都不成立执行else代码块n
/*输入成绩 如果满分奖励一次 高于90假发 高于80洗发水 高于60洗面奶 否则无奖励 */ package com.kgc; import java.util.Scanner; public class Demo05 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int score = sc.nextInt(); System.out.println("请输入成绩:"); if (score==100){ System.out.println("一次"); }else if (score>90){ System.out.println("假发"); }else if (score>80){ System.out.println("洗发水"); }else if (score>60){ System.out.println("洗面奶"); }else{ System.out.println("无奖励"); } } }
-
4. 选择结构
-
选择结构
-
语法
语法格式: switch(){ case 值1: 代码块1; break; case 值2: 代码块2; break; ... default : 代码块n; break; }
-
原理
- 判断变量的值和值1是不是相等,如果相等执行代码块1,执行完后找break结束 ; 如果不相等,判断值和值2是否相等,如果相等执行代码块2,执行完找break结束整个switch… ; 如果都不符合,再有default的情况下执行代码块n
-
注意
- case后的值不能相同
- case有穿透效果,如果没有break向下执行
- switch结束,要么执行完代码,要么遇到break
- switch支持的数据类型
- byte , short , int , char , String , 枚举
//练习 package com.kgc; import java.util.Scanner; public class Demo09_Month { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("输入月份:"); int month = sc.nextInt(); switch (month){ case 1: case 2: System.out.println("冬季"); case 3: case 4: case 5: System.out.println("春季"); case 6: case 7: case 8: System.out.println("夏季"); case 9: case 10: case 11: System.out.println("秋季"); case 12: System.out.println("冬季"); } } }
-
5. 循环结构
为了提高复用性,提高扩展性和可维护性
-
while循环
-
语法 : while(循环条件){代码块}
-
原理 : 循环条件成立时,则执行代码块,执行完代码块会再次回来循环条件判断的位置,如果依然成立,则再次执行代码,知道循环条件不成立为止(循环结构结束)
-
控制循环次数
- 循环变量
- 循环条件
- 循环变量的值改变
//打印五次helloworld package com.kgc; public class Demo10_Print5 { public static void main(String[] args) { int i=0; while (i<5){ System.out.println("HelloWorld"); i++; } } } //打印1-5,在打印5-1 package com.kgc02; public class Demo01_Xunhuan { public static void main(String[] args) { int i=1; while(i<6){ System.out.println(i); i++; } while(i>1){ i--; System.out.println(i); } } } //输出1-100之间的和 package com.kgc02; public class Demo02_Xunhuan { public static void main(String[] args) { int i=1,sum=0; while (i<101){ sum+=i; i++; } System.out.println(sum); } } //输出1-100之间的偶数和 package com.kgc02; public class Demo03_Xunhuan { public static void main(String[] args) { int i=1,sum=0; while (i<101){ if(i%2==0){ sum+=i; } i++; } System.out.println(sum); } } //不断输入正数,输出啥打印啥,知道输入-1为止 package com.kgc02; import java.util.Scanner; public class Demo04_Xunhuan { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true){ System.out.print("输入一个数:"); int i = sc.nextInt(); if(i==-1){ break; }else System.out.println(i); } } } //班级有五位同学,依次输入每位同学的java成绩,求出总成绩的最高分,平均分,最低分 package com.kgc02; import java.util.Scanner; public class Demo05_Xunhuan { public static void main(String[] args) { Scanner sc = new Scanner(System.in); float i=1,sum=0,max=0,min=100; float avg=0; while (i<=5){ System.out.print("请输入第"+i+"个同学的成绩:"); float score = sc.nextInt(); sum+=score; if (score>max){ max=score; } if (score<min){ min=score; } avg=(float)(sum/i); ++i; } System.out.println("总成绩:" + sum); System.out.println("最大:" + max); System.out.println("最小:" + min); System.out.println("平均分:" + avg); } }
-
循环嵌套(循环内有完整的循环)
//打印图形 package com.kgc02; public class Demo06_Rectangle { public static void main(String[] args) { int i=1; while (i<=3){ int j=1; //while(j<=i) 打印直角三角形 while (j<=4) { System.out.print("*"); j++; } System.out.println();//换行功能 i++; } } } //九九乘法表 package com.kgc02; public class Demo_MultiplicationTable { public static void main(String[] args) { int i = 1; while (i <= 9) { int j = 1; while (j <= i) { System.out.print(j + "×" + i + "=" + i*j + "\t"); j++; } System.out.println(); i++; } } }
-
-
for循环
-
语法 : for(循环变量的声明;循环条件;循环变量的改变){代码块}
-
把循环的三要素,总结到了一行(小括号内)
-
确定循环次数的情况下,使用for循环
-
不确定循环次数的情况下,使用while循环
//for循环实现九九乘法表 package com.kgc02; public class Demo09_Forloop { public static void main(String[] args) { for(int i=1;i<=9;i++){ for (int j=1;j<=i;j++){ System.out.print(j + "×" + i + "=" + i*j + "\t"); } System.out.println(); } } }
-
-
do…while
-
语法 : do{代码块}while(循环条件);
-
原理 : 执行代码块,然后再判断循环条件,如果成立则继续执行代码块,如果不成立则循环结束
-
特点 : do…while至少无条件循环一次
-
场景 : 不确定循环次数时使用
//登录,输入用户名和密码(username=root,password=123) package com.kgc02; import java.util.Scanner; public class Demo10_Sign { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String userName; String passWord; boolean flag=true; do { System.out.print("请输入用户名:"); userName = sc.next(); System.out.print("请输入密码:"); passWord = sc.next(); if (userName.equals("root")&&passWord.equals("123")){ System.out.println("欢迎登录!"); flag=false; }else if (userName.equals("quit")||passWord.equals("quit")){ System.out.println("欢迎再来!"); flag=false; }else{ System.out.println("用户名或密码错误,请重新输入"); } }while (flag); } }
-
-
break
- 用于结束当前循环(离他最近的那个循环,它属于这个循环里边的代码)
-
continue
-
用于结束本次循环,直接进入下一次循环
//数7游戏(数字中带7的或7的倍数不行,不打印) package com.kgc02; import java.util.Scanner; public class Demo11_Count7 { public static void main(String[] args) { int number=0; Scanner sc = new Scanner(System.in); while (true){ number++; if (number>30){ System.out.println("再见!"); break; }else if (number%7==0 || number%10==7){ System.out.println("过"); continue; }else { System.out.println(number); } } } }
-
四. 数组
-
容器 : 将多个数据存储在一起,每个数据都称为该容器的元素
-
数组 : 数组就是用于存储数据的长度固定的容器,保证多个数据的数据类型要一致
-
数组的特点
- 数字的长度一旦确定不能修改
- 创建数组时,会在内存中开辟一块连续的空间
- 存取元素的速度快,因为可以通过下标直接定位到任意一个元素
1. 一维数组
-
数组的定义
-
方式一 :静态初始化
- 数据类型[] 数组名 = {元素1,元素2,元素3…}
-
方式二 :静态初始化
- 数据类型[] 数组名 = new 数据类型[] {元素1,元素2,元素3…}
-
方式三 :动态初始化
- 数据类型[] 数组名
- 数组名 = new 数据类型[长度]
- 数组名 = new 数据类型[] {元素1,元素2,元素3…}
//定义一个数组,保存五个人的名字 package com.kgc01; public class Demo01 { public static void main(String[] args) { //方式一 String[] names1 = {"张三", "李四"}; //方式二 String[] names2 = {"王五","赵六"}; //方式三 String[] names3; names3 = new String[]{"张三", "李四"}; String[] names4 = new String[5]; names4[0]="zhang"; System.out.println(names4[0]); } } //保存五个人的java成绩 package com.kgc01; import java.util.Scanner; public class Demo02 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] score = new int[5]; for(int i=0;i<5;i++){ System.out.print("请输入第"+(i+1)+"个人的成绩:"); score[i]=sc.nextInt(); } System.out.println(score[2]); } }
-
[] 表示的是一个数组
-
数组名 : 起一个变量名,满足标识符的规范,后边可以用这个名字操作数组
-
new : 关键字,创建数组时使用的,数组本身是一个引用数据类型,所以需要用new创建一个数组对象
-
[长度] : 数组的长度,表示数组容器中可以存放多少个元素(一旦制定不能修改)
-
索引 : 每个存储的数组中的元素,都会自动拥有一个编号,从0开始称为数组索引(index)
-
索引范围 : [o,数组的长度-1]
-
数组的长度 : 每个数组都有一个长度,是固定的,Java给了数组的一个属性,可以获取数组的长度(数组名.length),执行后可以得到数组的长度(int类型的结果)
- 数组的最大索引 数组名.length-1
-
数组的遍历 : 把数组中的每一个元素都获取出来,这就是遍历
//遍历数组 int Max=0,Min=100,Sum=0; for(int i=0;i<score.length;i++){ if(score[i]>Max){ Max=score[i]; } if (score[i]<Min){ Min=score[i]; } Sum+=score[i]; } System.out.println("最高的成绩是:"+Max); System.out.println("最低的成绩是:"+Min); System.out.println("总成绩是:"+Sum);
-
-
内存相关
-
方法区
- 保存一些类信息,常量,静态变量
-
堆
- 保存的都是对象,如数组对象是new来创建的,都保存在堆内存
-
栈
- java执行过程中执行过程中,局部变量都会在里边,对象的引用,方法的执行,执行完会自动释放(先进后出,后进先出),压栈出栈
-
两个数组指向同一个地址
package com.kgc01; public class Demo03 { public static void main(String[] args) { int[] num = new int[]{1,2,3,4,5}; System.out.println(num);// [I@1540e19d 堆内存的地址 int[] num2 = num; num2[0]=99; System.out.println(num[0]); // 99 System.out.println(num2[0]); // 99 } }
-
注意事项
- ArrayIndexOutOfBoundsException 数组索引越界异常
- NullPointerException 空指针异常
- 新定义的数组都是有默认值的
- 字符串类型 默认值是null
- 整数类型 默认值是0
- 小数类型 默认值是0.0
-
2. 二维数组
-
二维数组定义
-
定义一 : int [] [] score = new int [] []{{80,90,100},{10,20,30},{40,50,60}}
-
简写 : int [] [] score = {{80,90,100},{10,20,30},{40,50,60}}
-
定义二 : int [] [] score = new int [3] [4]
//从键盘输入3个组的java成绩,使用二维数组解析 package com.kgc01; import java.util.Scanner; //从键盘输入3个组的java成绩,使用二维数组解析 public class Demo01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[][] score = new int[3][4]; //为每一个学生赋值 for (int i=0;i<score.length;i++){ for (int j=0;j<score[i].length;j++){ System.out.print("请输入第"+(i+1)+"小组中第"+(j+1)+"个同学的java成绩:"); score[i][j]=sc.nextInt(); } } //遍历 for (int i=0;i<score.length;i++){ for (int j=0;j<score[i].length;j++){ System.out.println("第"+(i+1)+"小组中第"+(j+1)+"个同学的java成绩:"+score[i][j]); } } } }
-
-
Arrays类
-
排序
//输入五个同学的java成绩,进行排序 package com.kgc01; import java.util.Arrays; import java.util.Scanner; public class Demo02 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] scores = new int[5]; for (int i=0;i<scores.length;i++){ System.out.print("请输入第"+(i+1)+"个同学的java成绩:"); scores[i]=sc.nextInt(); } System.out.println("排序前--------------------"); for (int i=0;i<scores.length;i++) { System.out.println("第" + (i + 1) + "个同学的java成绩:"+scores[i]); } System.out.println("排序后---升序--------------"); //默认升序排序 Arrays.sort(scores); for (int i=0;i<scores.length;i++) { System.out.println("第" + (i + 1) + "个同学的java成绩:"+scores[i]); } //降序 System.out.println("排序后---降序--------------"); for (int i=scores.length-1;i>=0;i--){ System.out.println(scores[i]); } } }
-
Arrays其他常用方法
格式 含义 equals(数组1,数组2) 比较两个数组是否相等 toString(array) 将一个数组转换成一个字符串 fill(数组,值) 把数组中的元素都赋值为一个值 copyOf(array,length) 把数组array复制成一个长度为length的新数组 binarySearch(array,val) 查找元素val在数组array中的下标,需要这个数组时有序的 package com.kgc01; import javax.lang.model.type.ArrayType; import java.util.Arrays; //Arrays常用方法 public class Demo03 { public static void main(String[] args) { //equals(数组1,数组2) 比较两个数组是否相等 int[] arr1 = {10,20,30}; int[] arr2 = {10,20,30}; int[] arr3 = {40,50,60}; System.out.println(Arrays.equals(arr1,arr2)); System.out.println(Arrays.equals(arr1,arr3)); //toString(array) 将一个数组转换成一个字符串 System.out.println(Arrays.toString(arr1)); //fill(数组,值) 把数组中的元素都赋值为一个值 int[] arr4 = new int[3]; Arrays.fill(arr4,100); System.out.println(Arrays.toString(arr4)); //copyOf(array,length) 把数组array复制成一个长度为length的新数组 int[] arr5 = {10,20,30,40}; int[] arr6 = Arrays.copyOf(arr5,6); System.out.println(Arrays.toString(arr6)); //binarySearch(array,val) 查找元素val在数组array中的下标,需要这个数组时有序的 Arrays.sort(arr5); System.out.println(Arrays.toString(arr5)); System.out.println(Arrays.binarySearch(arr5,30)); } }
-
-
算法
-
数组顺序查找
- 顺序查看,挨个查看,对数组元素的顺序没有要求
- 需求 : 有一个数组,查找一个数在不在这个数组中,如果在打印下标,如果不存在打印不存在
package com.kgc01; //需求 : 有一个数组,查找一个数在不在这个数组中,如果在打印下标,如果不存在打印不存在 public class Demo04 { public static void main(String[] args) { int[] arr1 = {10,20,30,24,46,78,25}; int value=78; //要查的数 int index=-1; //下标 for (int i=0;i<arr1.length;i++){ if (arr1[i]==value){ index=i; break; } } if(index==-1){ System.out.println(value+"不存在"); }else { System.out.println(value+"的下标是"+index); } } }
-
冒泡排序
- 原理 : 标胶两个相邻的元素,将较大的元素换到右边(后边/下边)
package com.kgc01; import java.util.Arrays; //冒泡排序 public class Demo05 { public static void main(String[] args) { int[] arr = {33,44,66,99,66,62,57,78}; System.out.println(Arrays.toString(arr)); for (int i=0;i<arr.length-1;i++){ //轮数 for (int j=0;j<arr.length-1-i;j++){ //每一轮比较几次 //如果前边的比后边的大就换 if (arr[j]>arr[j+1]){ int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } System.out.println(Arrays.toString(arr)); } }
-
二分法
- 原理 : 取中值来判断要查的值是在左边还是右边
package com.kgc02; //二分法 public class Demo06 { public static void main(String[] args) { //已知一个有序的数组,查某一个数是否在数组中,是的显示下标,不是的显示不存在 int[] arr = {2,3,4,5,6,7,9,12,34,45,56,66,78,}; int value=3; //要查的数 int index=-1; //下标 int left=0; int right=arr.length-1; int mid=(left+right)/2; while (left<=right){ if (value==arr[mid]){ index=mid; break; }else if (value>arr[mid]){ //往右继续查找 //移动左边界,使得mid往右移动 left=mid+1; }else if (value<arr[mid]){ //往左继续查找 right=mid-1; } mid=(left+right)/2; } if (index==-1){ System.out.println(value+"不存在"); }else { System.out.println("下标是"+index); } } }
-
3. 吃货联盟订餐系统
package com.kgc;
import java.util.Arrays;
import java.util.Scanner;
public class EatAliance {
public static void main(String[] args) {
// 菜单
String[] menusname = { "鱼香肉丝", "麻婆豆腐", "香辣猪蹄" };
double[] price = { 36.9, 19.9, 59.9 };
int[] star = { 0, 0, 0 };
// 订单人信息
String[] userName = new String[4];
String[] caiName = new String[4];
int[] caiCount = new int[4];
int[] time = new int[4];
String[] address = new String[4];
boolean[] status = new boolean[4];
double[] allPrice = new double[4];
// 程序开始
Scanner sc = new Scanner(System.in);
System.out.println("欢迎使用“吃货联盟订餐系统”");
while (true) {
int index = userName.length;
for (int i = 0; i < userName.length; i++) {
if (userName[i] == null) {
index = i;
break;
}
}
System.out.println("*********************");
System.out.println("1、我要订餐");
System.out.println("2、查看餐袋");
System.out.println("3、签收订单");
System.out.println("4、删除订单");
System.out.println("5、我要点赞");
System.out.println("6、退出系统");
System.out.println("*********************");
System.out.print("请选择");
int num = sc.nextInt();
switch (num) {
// 我要订餐
case 1:
if (index == 4) {
System.out.println("抱歉,现在订单已满,不可再次下单");
} else {
System.out.print("请输入订单人姓名:");
userName[index] = sc.next();
System.out.println("序号\t名称\t\t单价\t点赞数");
for (int i = 0; i < menusname.length; i++) {
System.out.println((i + 1) + "\t" + menusname[i]
+ "\t\t" + price[i] + "\t" + star[i]);
}
System.out.print("请输入序号点菜:");
int flag;
while (true) {
flag = sc.nextInt();
if (flag >= 0 && flag <= 3) {
caiName[index] = menusname[flag - 1];
break;
} else {
System.out.print("输入错误,请重新输入序号:");
}
}
System.out.print("请输入份数:");
while (true) {
int temp = sc.nextInt();
if (temp > 0) {
caiCount[index] = temp;
break;
} else {
System.out.print("输入错误,请重新输入数量:");
}
}
System.out.print("请输入送餐时间(10点~20点):");
while (true) {
int temp = sc.nextInt();
if (temp >= 10 && temp <= 20) {
time[index] = temp;
break;
} else {
System.out.print("输入错误,请重新输入时间(10点~2点):");
}
}
System.out.print("请输入送餐地址:");
address[index] = sc.next();
allPrice[index] = price[flag - 1] * caiCount[index];
if (allPrice[index] < 50) {
System.out.println("当单笔订单金额未达到50元时,需交纳6元送费");
allPrice[index] += 6;
}
System.out.println("订餐人信息");
System.out.println("姓名: \t" + userName[index]
+ "\n菜名: \t" + caiName[index] + "\n数量: \t"
+ caiCount[index] + "\n送餐时间:\t" + time[index]
+ "\n送餐地址:\t" + address[index] + "\n总金额: \t"
+ allPrice[index] + "¥");
}
System.out.print("输入0返回(或者任意整数)");
sc.nextInt();
break;
// 查看餐袋
case 2:
System.out.println("序号\t姓名\t菜名\t\t份数\t送餐时间\t\t送餐地址\t\状态\t总金额");
for (int i = 0; i < index; i++) {
System.out.println((i + 1) + "\t" + userName[i] + "\t"
+ caiName[i] + "\t\t" + caiCount[i] + "\t"
+ time[i] + "\t\t" + address[i] + "\t\t"
+ (status[i] ? "已签收" : "未签收") + "\t" +allPrice[i]
+ "¥");
}
System.out.print("输入0返回(或者任意整数)");
sc.nextInt();
break;
// 签收订单
case 3:
System.out.println("序号\t姓名\t菜名\t\t份数\t送餐时间\t\t送餐地址\t\t状态\t总金额");
for (int i = 0; i < index; i++) {
System.out.println((i + 1) + "\t" + userName[i] + "\t"
+ caiName[i] + "\t\t" + caiCount[i] + "\t"
+ time[i] + "\t\t" + address[i] + "\t\t"
+ (status[i] ? "已签收" : "未签收") + "\t" + allPrice[i]
+ "¥");
}
System.out.print("请输入序号签收订单:");
while (true) {
int temp = sc.nextInt();
if (temp - 1 >= 0 && temp <= index) {
status[temp - 1] = true;
break;
} else {
System.out.print("输入错误,请重新输入序号:");
}
}
System.out.println("序号\t姓名\t菜名\t\t份数\t送餐时间\t\t送餐地址\t\t状态\t总金额");
for (int i = 0; i < index; i++) {
System.out.println((i + 1) + "\t" + userName[i] + "\t"
+ caiName[i] + "\t\t" + caiCount[i] + "\t"
+ time[i] + "\t\t" + address[i] + "\t\t"
+ (status[i] ? "已签收" : "未签收") + "\t" + allPrice[i]
+ "¥");
}
System.out.print("输入0返回(或者任意整数)");
sc.nextInt();
break;
// 删除订单
case 4:
System.out.println("序号\t姓名\t菜名\t\t份数\t送餐时间\t\t送餐地址\t\t状态\t总金额");
for (int i = 0; i < index; i++) {
System.out.println((i + 1) + "\t" + userName[i] + "\t"
+ caiName[i] + "\t\t" + caiCount[i] + "\t"
+ time[i] + "\t\t" + address[i] + "\t\t"
+ (status[i] ? "已签收" : "未签收") + "\t" + allPrice[i]
+ "¥");
}
System.out.print("请输入序号删除订单:");
while (true) {
int temp = sc.nextInt();
if (temp - 1 >= 0 && temp <= index) {
for (int i = temp - 1; i < index - 1; i++) {
userName[i] = userName[i + 1];
caiName[i] = caiName[i + 1];
caiCount[i] = caiCount[i + 1];
time[i] = time[i + 1];
address[i] = address[i + 1];
status[i] = status[i + 1];
allPrice[i] = allPrice[i + 1];
}
userName[index - 1] = null;
caiName[index - 1] = null;
caiCount[index - 1] = 0;
time[index - 1] = 0;
address[index - 1] = null;
status[index - 1] = false;
allPrice[index - 1] = 0.0;
index--;
break;
} else {
System.out.print("输入错误,请重新输入序号:");
}
}
System.out.println("序号\t姓名\t菜名\t\t份数\t送餐时间\t\t送餐地址\t\t状态\t总金额");
for (int i = 0; i < index; i++) {
System.out.println((i + 1) + "\t" + userName[i] + "\t"
+ caiName[i] + "\t\t" + caiCount[i] + "\t"
+ time[i] + "\t\t" + address[i] + "\t\t"
+ (status[i] ? "已签收" : "未签收") + "\t" + allPrice[i]
+ "¥");
}
System.out.print("输入0返回(或者任意整数)");
sc.nextInt();
break;
// 我要点赞
case 5:
System.out.println("序号\t名称\t\t单价\t点赞数");
for (int i = 0; i < menusname.length; i++) {
System.out.println((i + 1) + "\t" + menusname[i] + "\t\t"
+ price[i] + "\t" + star[i]);
}
System.out.print("输入序号给菜品点赞");
while (true) {
int temp = sc.nextInt();
if (temp > 0 && temp <= 3) {
time[index] = temp;
star[temp - 1]++;
break;
} else {
System.out.print("输入错误,请重新输入序号:");
}
}
System.out.println("序号\t名称\t\t单价\t点赞数");
for (int i = 0; i < menusname.length; i++) {
System.out.println((i + 1) + "\t" + menusname[i] + "\t\t"
+ price[i] + "\t" + star[i]);
}
System.out.print("输入0返回(或者任意整数)");
sc.nextInt();
break;
// 退出系统
default:
System.out.println("谢谢使用,欢迎下次使用");
return;
}
}
}
}