今日重点:数组操作,二维数组
一.删除数组中的元素
1.第一种思路
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循环进行改造
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));
}
}
第四种思路:引入额外空间数组
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.第一种思路
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.第二种思路
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.方法一
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.方法二--引入额外空间数组
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.二维数组
二维数组:一维数组里面的每组元素又是一个一维数组
语法:
类型[][]对象名=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);
}
}