Day8:2023.4.26

文章展示了如何在Java中处理可变长度的数组,包括添加、修改、删除和查询商品信息。在添加商品时,如果数组满则会扩容;删除商品后会缩容。值传递和引用传递的概念也被提及,指出Java中的基本类型和引用类型的区别。
摘要由CSDN通过智能技术生成

一、可变参数数组

        数组的长度未知,例:未知长度数组内容求和

 二、值传递和引用传递

        1、值传递:

                传递的是值,所以原来的值本身不会改变,所有的基本类型+String都属于值传递

        2、引用传递: 

                传递的是地址,所以会对原来的内容有影响,所有引用数据类型都属于引用传递

3、实例

定义一个数组保存商品信息
 定义添加商品、修改商品、删除、查询商品的方法  (自定义参数和返回值 需要就定义 不需要可以不定义)
1.添加商品
  要求:

先判断下数组位置够不够用

,不够用需要扩容,添加前先判断商品是否存在,不存在方可添加
2.修改商品
要求:被被修改的商品必须在数组中存在才能修改
3.删除
要求:删除已存在的商品
4.查询
遍历数组,打印数组商品名

注意!!!当数组扩容或缩容时,names不再是names(地址改变了),需要重新接收数组 

附代码如下:

import java.util.Arrays;
import java.util.Scanner;
public class work3 {
    public static void main(String[] args) {
       menu();
    }
    //判断是否存在该商品,存在返回其下标,否则返回-1
    public static int isCZ(String[] names,String name,int size){
        for (int i = 0; i < size; i++) {
            if(names[i].equals(name)){
                return i;
            }
        }
        return -1;
    }
    //添加商品:先判断需要添加的商品是否存在,然后看是否有位置;扩容或直接添加
    public static String[] add(String[] names,String name,int size){
        int cz = isCZ(names, name,size);
        if(cz==-1){
            System.out.println("可以添加");
        }else{
            System.out.println("该商品已存在");
            return names;
        }
        if(size==names.length){
            names= Arrays.copyOf(names,names.length+1);
        }
        names[size]=name;
        return names;
    }
    //遍历输出
    public static void pri(String[] names){
        for (int i = 0; i < names.length; i++) {
            System.out.print(names[i]+"\t");
        }
        System.out.println();
    }
    //替换:先判断原商品是否存在,然后判断新商品是否已存在,然后进行替换(isCZ的返回值为原商品的下标)
    public static void change(String[] names,String name1,String name2,int size){
        int a=isCZ(names,name1,size);
        if(a==-1){
            System.out.println("您要替换的商品不存在");
            return;
        }
        int b=isCZ(names,name2,size);
        if(b!=-1){
            System.out.println("你要上架的新商品已存在");
            return;
        }
        names[a]=name2;
    }
    //删除商品,判断是否有需要删除的商品,没有就返回,有就删除,其余位置向前移动,并缩容数组
    public static String[] del(String[] names,String name,int size){
        int a=isCZ(names,name,size);
        if(a==-1){
            System.out.println("你想要删除的商品不存在");
            return names;
        }
        for (int i = a; i <names.length-2; i++) {
            names[i]=names[i+1];
        }
        names=Arrays.copyOf(names,names.length-1);
        return names;
    }
    //调用界面
    public static void menu(){
        String[] names={"苹果","香蕉","榴莲"};
        int size=3;
        Scanner sc=new Scanner(System.in);
        w:while (true){
            System.out.println("请输入操作\n1:是查询\t2:添加\t3:删除\t4:替换\t5:退出");
            int m=sc.nextInt();
            switch (m) {
                case 1:
                    pri(names);
                    break;
                case 2:
                    System.out.println("请输入需要添加的商品:");
                    String n1 = sc.next();
                    names = add(names, n1, size);
                    size=names.length;
                    break;
                case 3:
                    System.out.println("请输入需要删除的商品:");
                    String n2 = sc.next();
                    names = del(names, n2, size);
                    size=names.length;
                    break;
                case 4:
                    System.out.println("请输入需要替换的商品:");
                    String n3 = sc.next();
                    System.out.println("请输入替换后的商品:");
                    String n4 = sc.next();
                    change(names, n3, n4, size);
                    break;
                case 5:
                    System.out.println("退出");
                    break w;
                default:
                    System.out.println("输入错误!!!");
                    break;
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值