Day7 JavaSE

45 阅读1分钟

今日重点:数组操作,二维数组

一.删除数组中的元素

1.第一种思路

image.png

package Day07;  
  
public class Test09 {  
public static void main(String[] args) {  
char[]arr=new char[]{'a','b','c','d'};  
arr[1]='\0';  
arr[1]=arr[2];  
arr[2]=arr[3];  
arr[3]='\0';  
for(int i=0;i<arr.length;i++){  
System.out.print(arr[i]);  
}  
}  
}

第二种思路:用for循环进行改造 image.png image.png

package Day07;  
  
public class Test10 {  
public static void main(String[] args) {  
char[] arr = new char[]{'a', 'b', 'c', 'd', 'e'};  
for (int i = 1; i < arr.length - 1; i++) {  
arr[i] = arr[i + 1];  
  
}  
for (int i = 0; i < arr.length - 1; i++) {  
System.out.print(arr[i] + ",");  
}  
  
}  
}

第三种思路:与第二种一样

package Day07;  
  
import java.util.Arrays;  
  
public class Test02 {  
public static void main(String[] args) {  
char[]arr=new char[]{'a','b','c','d'};  
for(int i=2;i<arr.length;i++){  
arr[i-1]=arr[i];  
}  
  
System.out.println(Arrays.toString(arr));  
}  
}

第四种思路:引入额外空间数组 image.png

package Day07;  
  
import java.util.Arrays;  
  
public class Test11 {  
public static void main(String[] args) {  
char[] arr = new char[]{'a', 'b', 'c', 'd', 'e'};  
char[] arr1 = new char[4];  
int m = 0;  
for (int i = 0; i < arr.length; i++) {  
if (arr[i] == 'b') {  
continue;  
}  
arr1[m++] = arr[i];  
}  
System.out.println(Arrays.toString(arr1));  
}  
}

二.两个变量交换值

1.第一种思路 image.png

package Day07;  
  
public class Test03 {  
public static void main(String[] args) {  
int a=10;  
int b=20;  
int temp=a;  
a=b;  
b=temp;  
System.out.println(a);  
System.out.println(b);  
}  
} 

2.第二种思路 image.png

package Day07;  
//进行数据交换  
public class Test08 {  
public static void main(String[] args) {  
int a=10;  
int b=20;  
a=a^b;  
b=a^b;  
a=a^b;  
System.out.println(a);  
System.out.println(b);  
}  
}

三.数组元素倒序

1.方法一 image.png

package Day07;  
  
import java.util.Arrays;  
  
//倒序输出数组的元素  
public class Test05 {  
public static void main(String[] args) {  
char[]arr=new char[]{'1','2','3','4','5'};  
for(int i=0;i<=arr.length/2;i++){  
char temp=arr[i];  
arr[i]=arr[arr.length-1-i];  
arr[arr.length-1-i]=temp;  
}  
for(int i=0;i<arr.length;i++){  
System.out.println(arr[i]);  
}  
}  
}

2.方法二--引入额外空间数组 image.png

package Day07;  
//交换变量的值  
public class Test04 {  
public static void main(String[] args) {  
char[]arr=new char[]{'1','2','3','4','5'};  
char[]arr1=new char[5];  
int a=arr1[0];  
for(int i=arr.length-1;i>=0;i--){  
arr1[a++]=arr[i];  
  
}  
for(int i=0;i<arr1.length;i++){  
System.out.println(arr1[i]);  
}  
}  
}

四.小节实战案例

package Day07;  
  
import java.util.Scanner;  
  
public class Test06 {  
public static void main(String[] args) {  
Scanner sc=new Scanner(System.in);  
System.out.println("欢迎光临简易超市管理系统");  
String[]names=new String[200];  
double[]price=new double[200];  
int store=0;  
int n=0;  
do{  
System.out.println("请选择要完成的操作");  
System.out.println("1.录入产品");  
System.out.println("2.查看商品");  
System.out.println("3.下架商品");  
System.out.println("4.最新上架产品");  
System.out.println("5.退出系统");  
n=sc.nextInt();  
switch(n){  
case 1:  
//要录入产品,应该是一个循环,循环录入  
do{  
System.out.println("是否要录入商品 y|n");  
String next=sc.next();  
if(next.equals("y")){  
System.out.println("请输入商品名称");  
names[store]=sc.next();  
System.out.println("请输入商品价格");  
price[store]=sc.nextDouble();//现在库存数里面有对应的商品名称和商品价格了  
store++;  
}else{  
break;}  
}while(true);  
break;  
case 2:  
System.out.println("商品编号\t商品名称\t商品价格");  
//然后从录入的商品中遍历  
for(int i=0;i<store;i++){  
System.out.println((i+1)+"\t"+names[i]+"\t"+price[i]);//商品的编号从1开始  
}  
break;  
case 3:  
//商品下架功能 使用之前需要先查看都有什么产品  
System.out.println("欢迎使用商品下架功能");  
System.out.println("编号\t名称\t价格");  
for(int i=0;i<store;i++){  
System.out.println((i+1)+"\t"+names[i]+"\t"+price[i]);  
}  
System.out.println("请输入要下架的商品编号");  
int id=sc.nextInt();//id号  
if(id>=1&&id<=store){//id号从1开始,到库存数结束  
//此时可以下架,下架如何下架,运用循环  
for(int i=id-1;i<store;i++){//因为用户输入的账号都是从1开始的,而我们需要操作的是库存数中的数字,所以需要-1  
names[i]=names[i+1];  
price[i]=price[i+1];  
}  
store--;  
System.out.println("商品下架成功");  
}else{  
System.out.println("请输入正确的商品编号");  
}  
break;  
case 4:  
System.out.println("最新上架商品");  
if(store==0){  
System.out.println("没有上架商品,请录入");  
}else{  
System.out.println("最新产品名称是"+names[store-1]+"最新产品价格是"+price[store-1]);  
}  
break;  
case 5:  
System.out.println("程序结束");  
System.exit(0);  
break;  
}  
  
}while(n>=0);  
}  
}

五.多维数组

1.二维数组

二维数组:一维数组里面的每组元素又是一个一维数组 image.png

语法:
类型[][]对象名=new 类型[几个一维数组][一维数组里面有几个值];
类型[][]对象名={{值1,值2,值3}{}{}};
数组对象[脚标][脚标]=新值;
遍历二维数组
    for(int i=0;i<数组对象名.length;i++){//操作的是一维数组
        for(int j=0;j<数组对象名[i].length;j++){//操作一维数组中的数据
        }

六.小节实战案例

package Day07;  
  
import java.util.Scanner;  
  
public class Test07 {  
public static void main(String[] args) {  
System.out.println("欢迎光临我的简易超市系统");  
Scanner sc=new Scanner(System.in);  
int n=0;  
String[][]product=new String[2][200];//两个二维数组,每个二维数组里面装200个  
do{  
System.out.println("1.录入商品");  
System.out.println("2.查看商品");  
System.out.println("3.下架商品");  
System.out.println("4.查看最新商品");  
System.out.println("5.退出系统");  
n=sc.nextInt();  
switch(n){  
case 1:  
do{  
System.out.println("是否要录入商品");  
String sp=sc.next();  
int index=-1;  
if(sp.equals("y")){//想要录入商品  
for(int i=0;i<product[0].length;i++){  
if(product[0][i]==null){  
index=i;  
break;  
}  
}  
System.out.println("请输入商品名称");  
product[0][index]=sc.next();  
System.out.println("请输入商品价格");  
product[1][index]=sc.next();  
  
  
  
  
}else{  
break;  
}  
  
}while(true);  
break;  
case 2:  
System.out.println("查看商品");  
if(product[0][0]==null){  
System.out.println("还没有录入商品呢,请先录入商品");  
break;  
}  
System.out.println("商品名称\t商品价格");  
//最多录入200个  
for(int i=0;i<200;i++){  
//当遍历到空的时候结束循环  
if(product[0][i]==null){  
break;  
}  
System.out.println(product[0][i]+"\t"+product[1][i]);  
}  
break;  
case 3:  
//下架商品--下架商品之前需要先查看一下现有的商品  
System.out.println("下架商品");  
System.out.println("编号\t商品名称\t商品价格");  
int index1=-1;  
for(int i=0;i<200;i++){  
if(product[0][i]==null){  
index1=i;  
break;  
}  
System.out.println((i+1)+product[0][i]+"\t"+product[1][i]);  
}  
if(index1==0){  
System.out.println("还没有录入商品呢,请先录入商品");  
break;}  
System.out.println("请输入要删除的编号");  
int id=sc.nextInt();  
for(int i=id-1;i<index1;i++){  
product[0][i]=product[0][i+1];  
product[1][i]=product[1][i+1];  
}  
//把元素覆盖了的话,必须置为空  
product[0][index1]=null;  
product[1][index1]=null;  
  
break;  
case 4:  
System.out.println("最新上架");  
int index = 0;  
for (int i = 0; i < 200; i++) {  
if (product[0][i] == null) {  
index = i;  
break;  
}  
}  
System.out.println("名称\t价格");  
System.out.println(product[0][index - 1] + "\t" + product[1][index - 1]);  
break;  
  
  
  
case 5://退出系统  
System.out.println("程序结束");  
System.exit(0);  
break;  
  
}  
  
  
  
}while(n>=0);  
}  
}