为什么需要使用数组:在内存空间中连续分配内存的一种结构
一个变量默认情况下只能存储一个数据,数组可以存储若干个
创建数组的语法:
1:数据类型 [] 数组名 =new 数据类型[长度];
2:数据类型 [] 数组名=new 数据类型[]{a,b,c,d}
3:数据类型 [] 数组名={a,b,c,d};
向数组中保存元素的方式:第几个位置赋什么值
index索引**:从0开始的,一值到数组的长度-1
如果index的范围超了,就会引发运行异常:ArrayIndexOutOfBoundsException(数组下标越界)
数据类型:数组中元素的类型
获取数组中每个元素的值:通过index下标
修改数组中的值:通过index进行直接复制
数组的长度:通过数组名.length
二维数组:数组中的一个元素还是数组
数组是一种类型:象征着多的一种类型
操作数组的工具类:Arrays static修饰的方法,所以说可以通过类名直接使用
如何为数组排序(升序):自然排序 1 2 3 a b c
Arrays.sort():升序排序(数字 字母。。。进行排序 ASCII)
通过逆序输出,实现逆序的效果
Arrays.toString():将数组转换为String变量进行输出(鸡肋)
–print(在它打印变量的时候,默认会调用该变量的toString方法)
Arrays.fill():向数组中填充元素,直到填满为止
Arrays.copyOf():复制一个数组出来,指定新数组的长度
Arrays.binarySearch(); 查询一个数组中的元素所对应的索引位置(排序后的数组)
1:打擂计算方式
获取数组中最大的元素
1.1 在循环结构外声明一个代表最大值的变量,默认以数组中的第一个元素为最大值 int max=arrs[0];
1.2 通过循环遍历数组,获取后面的元素与max变量进行比较,如果后面的元素大于max变量,进行赋值交换
1.3 循环结束时,输出max变量即可!
int ages[]={10,20,30,40,50,60};
int max=ages[0];//默认最大值
for (int i = 1; i < ages.length; i++) {
if(ages[i]>max){
//变量值的交换
max=ages[i];
}
}
2:向数组中插入指定的元素,并维持元素的顺序(数组中元素的后移操作)
int scores[]={59,68,77,86,95};
System.out.print("插入前成绩为:");
for (int i = 0; i < scores.length; i++) {
System.out.print(scores[i]+" ");
}
//向数组中插入一个成绩
System.out.println("请输入要插入的成绩:");
int score=in.nextInt();
//1:对原有的数组进行扩容
scores=Arrays.copyOf(scores, scores.length+1);
int index=scores.length-1;
//2:先获取到要插入的位置 index
for (int i = 0; i < scores.length; i++) {
if(score<scores[i]){
index=i;//我要插入的位置
break;
}
}
//3:元素后移
for (int i = scores.length-1; i>index; i--) {
scores[i]=scores[i-1]; //使用前面的元素覆盖后面的
}
//4:空已挪出,插入
scores[index]=score;
System.out.println("插入的下标为:"+index);
System.out.print("插入后成绩为:");
for (int i = 0; i < scores.length; i++) {
System.out.print(scores[i]+" ");
}
吃货联盟小项目
package com.wenyue;
import java.util.Date;
import java.util.Scanner;
public class Interface {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double[] dish_P = {38,20,10}, all_C = new double[11];
String[] dish_T={"红烧带鱼","鱼香肉丝","时令鲜蔬"}, dish_N=new String[11] ,dish_NewT=new String[11], dish_S = new String[11] ,dish_Con = {"已完成","已预订"};
int [] dish_Nu = new int[11],dish_D = new int[11],dish_Pra={0,0,0},seq_Num = new int[1000] ;
int dish_type=0,dish_Num=0,dish_Time=0,tse_Num = 0,nu_Order = 0,ntse_Num=0;
double carry_Cost = 0,all_Cost = 0;
String dish_Name = null,dish_site = null;
Date date = new Date();
int k=0;
while (true) {
System.out.println("\n欢迎使用“吃货联盟订餐系统”");
System.out.println("**************************************");
System.out.println("1、我要订餐\n2、查看餐袋\n3、签收订单\n4、删除订单\n5、我要点赞\n6、退出系统");
System.out.println("**************************************");
System.out.print("请选择:");
int tab = input.nextInt();
if (tab == 1) {
System.out.println("***我要订餐***");
System.out.printf("序号\t菜名\t单价\n1\t%s\t%s元\n2\t%s\t%s元\n3\t%s\t%s元\n",dish_T[0],dish_P[0],dish_T[1],dish_P[1],dish_T[2],dish_P[2]);
if (nu_Order-k>=10) {
System.out.println("您的订单总数已满,请先删除订单!");
continue;
}
System.out.print("请选择您要点的菜品编号:");
while (true) {
dish_type = input.nextInt();
if (dish_type > 0&&dish_type <= dish_T.length) {
break;
}else {
System.out.print("您的编号有误,请输入本菜单中存在的菜品:");
}
}
System.out.print("请选择您需要的份数:");
while (true) {
dish_Num = input.nextInt();
if (dish_Num > 0) {
break;
}else {
System.out.print("您输入份数有误,请输入大于0份:");
}
}
carry_Cost = 6;
if (dish_Num > 3) {
for (int i =1 ; i <= dish_Num-3; i+=2) {
carry_Cost += 3;
}
}
System.out.print("请输入订餐人的姓名:");
dish_Name = input.next();
System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):");
while (true) {
dish_Time = input.nextInt();
if (dish_Time>=10&&dish_Time<=20) {
break;
}else {
System.out.print("您的输入有误,请输入10~20之间的整数!:");
}
}
System.out.print("请输入送餐地址:");
dish_site = input.next();
all_Cost = carry_Cost + dish_P[dish_type-1] * dish_Num;
System.out.printf("\n订餐成功!\n您定的是%s%s份\n送餐时间:%s点\n餐费:%s元,送餐费%s元,总计:%s元。\n",dish_T[dish_type-1],dish_Num,dish_Time,dish_P[dish_type-1] * dish_Num,carry_Cost,all_Cost);
System.out.print("输入0返回:");
while (true) {
int in = input.nextInt();
if (in == 0) {
break;
}else {
System.out.print("您的输入有误,请输入0进行返回:");
}
}
dish_N[nu_Order-k]=dish_Name;
dish_NewT[nu_Order-k]=dish_T[dish_type-1];
dish_Nu[nu_Order-k]=dish_Num;
dish_D[nu_Order-k]=date.getDate();
dish_S[nu_Order-k]=dish_site;
all_C[nu_Order-k]=all_Cost;
seq_Num [nu_Order-k]= 1;
nu_Order++;
}
//选择3的情况
else if(tab == 3) {
System.out.println("***签收订单***");
System.out.print("请选择要签收的订单序号:");
tse_Num = input.nextInt();
seq_Num [tse_Num-1]= 0;
System.out.print("您选择的订单已完成签收,不能再次签收!");
System.out.print("输入0返回:");
while (true) {
int in = input.nextInt();
if (in == 0) {
break;
}else {
System.out.print("您的输入有误,请输入0进行返回:");
}
}
}
//选择4的情况,删除订单
else if(tab == 4) {
System.out.println("***删除订单***");
System.out.print("请输入要删除的订单序号:");
ntse_Num = input.nextInt();
for (int i = ntse_Num-1; i < nu_Order; i++) {
dish_N[i]=dish_N[i+1];
dish_NewT[i]=dish_NewT[i+1];
dish_Nu[i]=dish_Nu[i+1];
dish_D[i]=dish_D[i+1];
dish_S[i]=dish_S[i+1];
all_C[i]=all_C[i+1];
seq_Num [i]= seq_Num [i+1];
}
k++;
System.out.print("删除订单成功!");
System.out.print("输入0返回:");
while (true) {
int in = input.nextInt();
if (in == 0) {
break;
}else {
System.out.print("您的输入有误,请输入0进行返回:");
}
}
}
//选择2的情况
else if (tab == 2) {
System.out.println("***查看餐袋***");
System.out.println("序号\t订餐人\t餐品信息\t\t送餐日期\t送餐地址\t\t总金额\t订单状态");
for (int i = 1; i <= nu_Order-k; i++) {
System.out.printf("%s\t%s\t%s%s份\t%s日\t%s\t\t%s元\t%s\n",i,dish_N[i-1],dish_NewT[i-1],dish_Nu[i-1],dish_D[i-1], dish_S[i-1], all_C[i-1],dish_Con[seq_Num [i-1]]);
}
System.out.print("输入0返回:");
while (true) {
int in = input.nextInt();
if (in == 0) {
break;
}else {
System.out.print("您的输入有误,请输入0进行返回:");
}
}
}
//选择5的情况
else if(tab == 5){
System.out.println("***我要点赞***");
System.out.printf("序号\t菜名\t单价\n1\t%s\t%s元\n2\t%s\t%s元\n3\t%s\t%s元\n",dish_T[0],dish_P[0],dish_T[1],dish_P[1],dish_T[2],dish_P[2]);
System.out.print("请选择您要点赞的菜品编号:");
while (true) {
dish_type = input.nextInt();
if (dish_type > 0&&dish_type <= dish_T.length) {
break;
}else {
System.out.println("您的编号有误,请输入本菜单中存在的菜品:");
}
}
dish_Pra[dish_type-1]++;
System.out.println(dish_T[dish_type-1] + dish_Pra[dish_type-1] +"赞");
System.out.print("输入0返回:");
while (true) {
int in = input.nextInt();
if (in == 0) {
break;
}else {
System.out.print("您的输入有误,请输入0进行返回:");
}
}
}
//选择6的情况,结束
else if (tab == 6){
System.out.print("谢谢使用,欢迎下次光临!");
break;
}
else {
System.out.print("您的输入有误,请重新输入!");
}
}
}
}
chart.js/为什么需要使用数组:在内存空间中连续分配内存的一种结构
一个变量默认情况下只能存储一个数据,数组可以存储若干个
创建数组的语法:
1:数据类型 [] 数组名 =new 数据类型[长度];
2:数据类型 [] 数组名=new 数据类型[]{a,b,c,d}
3:数据类型 [] 数组名={a,b,c,d};
向数组中保存元素的方式:第几个位置赋什么值
index索引**:从0开始的,一值到数组的长度-1
如果index的范围超了,就会引发运行异常:ArrayIndexOutOfBoundsException(数组下标越界)
数据类型:数组中元素的类型
获取数组中每个元素的值:通过index下标
修改数组中的值:通过index进行直接复制
数组的长度:通过数组名.length
二维数组:数组中的一个元素还是数组
数组是一种类型:象征着多的一种类型
操作数组的工具类:Arrays static修饰的方法,所以说可以通过类名直接使用
如何为数组排序(升序):自然排序 1 2 3 a b c
Arrays.sort():升序排序(数字 字母。。。进行排序 ASCII)
通过逆序输出,实现逆序的效果
Arrays.toString():将数组转换为String变量进行输出(鸡肋)
--print(在它打印变量的时候,默认会调用该变量的toString方法)
Arrays.fill():向数组中填充元素,直到填满为止
Arrays.copyOf():复制一个数组出来,指定新数组的长度
Arrays.binarySearch(); 查询一个数组中的元素所对应的索引位置(排序后的数组)
1:打擂计算方式
获取数组中最大的元素
1.1 在循环结构外声明一个代表最大值的变量,默认以数组中的第一个元素为最大值 int max=arrs[0];
1.2 通过循环遍历数组,获取后面的元素与max变量进行比较,如果后面的元素大于max变量,进行赋值交换
1.3 循环结束时,输出max变量即可!
// int ages[]={10,20,30,40,50,60};
// int max=ages[0];//默认最大值
// for (int i = 1; i < ages.length; i++) {
// if(ages[i]>max){
// //变量值的交换
// max=ages[i];
// }
// }
2:向数组中插入指定的元素,并维持元素的顺序(数组中元素的后移操作)
[1,2,3,4,5,6,7]
int scores[]={59,68,77,86,95};
System.out.print("插入前成绩为:");
for (int i = 0; i < scores.length; i++) {
System.out.print(scores[i]+" ");
}
//向数组中插入一个成绩
System.out.println("请输入要插入的成绩:");
int score=in.nextInt();
//1:对原有的数组进行扩容
scores=Arrays.copyOf(scores, scores.length+1);
int index=scores.length-1;
//2:先获取到要插入的位置 index
for (int i = 0; i < scores.length; i++) {
if(score<scores[i]){
index=i;//我要插入的位置
break;
}
}
//3:元素后移
for (int i = scores.length-1; i>index; i--) {
scores[i]=scores[i-1]; //使用前面的元素覆盖后面的
}
//4:空已挪出,插入
scores[index]=score;
System.out.println("插入的下标为:"+index);
System.out.print("插入后成绩为:");
for (int i = 0; i < scores.length; i++) {
System.out.print(scores[i]+" ");
}
吃货联盟小项目
package com.wenyue;
import java.util.Date;
import java.util.Scanner;
public class Interface {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double[] dish_P = {38,20,10}, all_C = new double[11];
String[] dish_T={"红烧带鱼","鱼香肉丝","时令鲜蔬"}, dish_N=new String[11] ,dish_NewT=new String[11], dish_S = new String[11] ,dish_Con = {"已完成","已预订"};
int [] dish_Nu = new int[11],dish_D = new int[11],dish_Pra={0,0,0},seq_Num = new int[1000] ;
int dish_type=0,dish_Num=0,dish_Time=0,tse_Num = 0,nu_Order = 0,ntse_Num=0;
double carry_Cost = 0,all_Cost = 0;
String dish_Name = null,dish_site = null;
Date date = new Date();
int k=0;
while (true) {
System.out.println("\n欢迎使用“吃货联盟订餐系统”");
System.out.println("**************************************");
System.out.println("1、我要订餐\n2、查看餐袋\n3、签收订单\n4、删除订单\n5、我要点赞\n6、退出系统");
System.out.println("**************************************");
System.out.print("请选择:");
int tab = input.nextInt();
if (tab == 1) {
System.out.println("***我要订餐***");
System.out.printf("序号\t菜名\t单价\n1\t%s\t%s元\n2\t%s\t%s元\n3\t%s\t%s元\n",dish_T[0],dish_P[0],dish_T[1],dish_P[1],dish_T[2],dish_P[2]);
if (nu_Order-k>=10) {
System.out.println("您的订单总数已满,请先删除订单!");
continue;
}
System.out.print("请选择您要点的菜品编号:");
while (true) {
dish_type = input.nextInt();
if (dish_type > 0&&dish_type <= dish_T.length) {
break;
}else {
System.out.print("您的编号有误,请输入本菜单中存在的菜品:");
}
}
System.out.print("请选择您需要的份数:");
while (true) {
dish_Num = input.nextInt();
if (dish_Num > 0) {
break;
}else {
System.out.print("您输入份数有误,请输入大于0份:");
}
}
carry_Cost = 6;
if (dish_Num > 3) {
for (int i =1 ; i <= dish_Num-3; i+=2) {
carry_Cost += 3;
}
}
System.out.print("请输入订餐人的姓名:");
dish_Name = input.next();
System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):");
while (true) {
dish_Time = input.nextInt();
if (dish_Time>=10&&dish_Time<=20) {
break;
}else {
System.out.print("您的输入有误,请输入10~20之间的整数!:");
}
}
System.out.print("请输入送餐地址:");
dish_site = input.next();
all_Cost = carry_Cost + dish_P[dish_type-1] * dish_Num;
System.out.printf("\n订餐成功!\n您定的是%s%s份\n送餐时间:%s点\n餐费:%s元,送餐费%s元,总计:%s元。\n",dish_T[dish_type-1],dish_Num,dish_Time,dish_P[dish_type-1] * dish_Num,carry_Cost,all_Cost);
System.out.print("输入0返回:");
while (true) {
int in = input.nextInt();
if (in == 0) {
break;
}else {
System.out.print("您的输入有误,请输入0进行返回:");
}
}
dish_N[nu_Order-k]=dish_Name;
dish_NewT[nu_Order-k]=dish_T[dish_type-1];
dish_Nu[nu_Order-k]=dish_Num;
dish_D[nu_Order-k]=date.getDate();
dish_S[nu_Order-k]=dish_site;
all_C[nu_Order-k]=all_Cost;
seq_Num [nu_Order-k]= 1;
nu_Order++;
}
//选择3的情况
else if(tab == 3) {
System.out.println("***签收订单***");
System.out.print("请选择要签收的订单序号:");
tse_Num = input.nextInt();
seq_Num [tse_Num-1]= 0;
System.out.print("您选择的订单已完成签收,不能再次签收!");
System.out.print("输入0返回:");
while (true) {
int in = input.nextInt();
if (in == 0) {
break;
}else {
System.out.print("您的输入有误,请输入0进行返回:");
}
}
}
//选择4的情况,删除订单
else if(tab == 4) {
System.out.println("***删除订单***");
System.out.print("请输入要删除的订单序号:");
ntse_Num = input.nextInt();
for (int i = ntse_Num-1; i < nu_Order; i++) {
dish_N[i]=dish_N[i+1];
dish_NewT[i]=dish_NewT[i+1];
dish_Nu[i]=dish_Nu[i+1];
dish_D[i]=dish_D[i+1];
dish_S[i]=dish_S[i+1];
all_C[i]=all_C[i+1];
seq_Num [i]= seq_Num [i+1];
}
k++;
System.out.print("删除订单成功!");
System.out.print("输入0返回:");
while (true) {
int in = input.nextInt();
if (in == 0) {
break;
}else {
System.out.print("您的输入有误,请输入0进行返回:");
}
}
}
//选择2的情况
else if (tab == 2) {
System.out.println("***查看餐袋***");
System.out.println("序号\t订餐人\t餐品信息\t\t送餐日期\t送餐地址\t\t总金额\t订单状态");
for (int i = 1; i <= nu_Order-k; i++) {
System.out.printf("%s\t%s\t%s%s份\t%s日\t%s\t\t%s元\t%s\n",i,dish_N[i-1],dish_NewT[i-1],dish_Nu[i-1],dish_D[i-1], dish_S[i-1], all_C[i-1],dish_Con[seq_Num [i-1]]);
}
System.out.print("输入0返回:");
while (true) {
int in = input.nextInt();
if (in == 0) {
break;
}else {
System.out.print("您的输入有误,请输入0进行返回:");
}
}
}
//选择5的情况
else if(tab == 5){
System.out.println("***我要点赞***");
System.out.printf("序号\t菜名\t单价\n1\t%s\t%s元\n2\t%s\t%s元\n3\t%s\t%s元\n",dish_T[0],dish_P[0],dish_T[1],dish_P[1],dish_T[2],dish_P[2]);
System.out.print("请选择您要点赞的菜品编号:");
while (true) {
dish_type = input.nextInt();
if (dish_type > 0&&dish_type <= dish_T.length) {
break;
}else {
System.out.println("您的编号有误,请输入本菜单中存在的菜品:");
}
}
dish_Pra[dish_type-1]++;
System.out.println(dish_T[dish_type-1] + dish_Pra[dish_type-1] +"赞");
System.out.print("输入0返回:");
while (true) {
int in = input.nextInt();
if (in == 0) {
break;
}else {
System.out.print("您的输入有误,请输入0进行返回:");
}
}
}
//选择6的情况,结束
else if (tab == 6){
System.out.print("谢谢使用,欢迎下次光临!");
break;
}
else {
System.out.print("您的输入有误,请重新输入!");
}
}
}
}