Java数组的2个小案例(杨辉三角分析和商品管理增删改查)

简介: Java数组的2个小案例(杨辉三角分析和商品管理增删改查)

1 Java数组实现杨辉三角Pascal’s Triangle

输出如下杨辉三角

  /**
   *      {1}
   *     {1,1}
   *    {1,2,1}
   *   {1,3,3,1}
   *  {1,4,6,4,1} 
   */
public class PascalTriangle {
  /**
   * yhArr[0][0]
   * yhArr[1][0]
   * 
   * yhArr[1][1]
   * yhArr[2][2]
   * 
   * 
   * yhArr[2][1] = yhArr[1][0] + yhArr[1][1]
   * yhArr[3][1] = yhArr[2][0] + yhArr[2][1]  
   * yhArr[4][2] = yhArr[3][1] + yhArr[3][2]  
   * 
   * yhArr[i][j] = yhArr[i-1][j-1] + yhArr[i-1][j];
   * 
   *      {1}
   *     {1,1}
   *    {1,2,1}
   *   {1,3,3,1}
   *  {1,4,6,4,1} 
   * 
   * 
   * 
   * {{0},{0,0},{0,0,0},{0,0,0,0},{0,0,0,0,0}}
   * {{1},{1,1},{1,2,1},{1,3,3,1},{1,4,6,4,1}}
   */
  public static void main(String[] args) {
    
    int[][] yhArr = new int[5][];
    
    //二维数组遍历
    for (int i = 0; i < yhArr.length; i++) {
      //yhArr[i] 表示每一个一维数组,暂未初始化
      yhArr[i] = new int[i+1];
      //遍历一维数组进行赋值
      for (int j = 0; j < yhArr[i].length; j++) {
        
        if(j == 0 || i == j) {
          yhArr[i][j] = 1;
        }else {
          yhArr[i][j] = yhArr[i-1][j-1] + yhArr[i-1][j];
        }
      }
    }
    for (int i = 0; i < yhArr.length; i++) {
      for (int j = 0; j < yhArr.length - i; j++) {
        System.out.print("  ");
      }
      for (int j = 0; j < yhArr[i].length; j++) {
        System.out.print(yhArr[i][j]+"    ");
      }
      System.out.println();
    }
  }
}

2 简易的商品管理系统

  1. 打印启动页面(欢迎使用XXXXX商品管理系统)
  2. 选择界面(1、增加 2、修改 3、删除 4、查看 5、排序 6、退出)
  3. 提供控制台输入(循环)
  4. 进行增删改查(数组)
  1. 增加
  • 考虑是否需要扩容
  • 添加商品 (要保证商品名称唯一)
  • 有效个数+1
  1. 删除
  • 判断要删除的商品是否存在
  • 考虑特殊情况:当数组的元素有效个数与数组的长度相等(扩容)
  • 删除元素
  • 数组的有效个数-1
  1. 修改
  • 判断要修改是否存在
  • 修改
  1. 遍历
  • 判断是否有商品
  • 遍历输出商品
  1. 查询
  • 判断商品是否存在
  • 返回商品所在下标,下标为-1则表示不存在
public class ProductManager {
  
  public static void main(String[] args) {
    start();
  }
    menu();
  }
  public static void menu() {
    System.out.println();
    System.out.println();
    System.out.println();
    System.out.println("===============欢迎使用XXXXX商品管理系统====================");
    Scanner sc = new Scanner(System.in);
    while(true) {
      System.out.println("1、增加 2、修改 3、删除 4、查看 5、排序 6、退出 ");
      int option = sc.nextInt();
      switch (option) {
      case 1:
        System.out.println("请输入要增加的商品");
        String productName = sc.next();
        add(productName);
        break;
      case 2:
        
        break;
      case 3:
        
        break;
      case 4:
        queryAll();
        break;
      case 5:
        
        break;
      case 6:
        System.out.println("欢迎下次使用!!!!");
        return;
      default:
        System.out.println("输入有误,请重新输入");
        break;
      }
    }
  }
  /**
   * 商品的名称进行增删改查(数组)
   */
  
  //表示商品名称数组
  static String[] names = {};   
  //表示数组中元素的有效个数
  static int size = 0;
  
  
  
  /**
   * 增加商品
   * @param productName   商品名称
   */
  public static void add(String productName) {
    //1、考虑是否需要扩容
    if(size == names.length) {
      names = Arrays.copyOf(names, names.length+5);
    }
    //2、添加商品  (要保证商品名称唯一)
    names[size] = productName;
    
    //3、有效个数+1
    size++;
  }

  /**
   * 修改商品
   * @param oldName   原名称
   * @param newName   新名称
   */
  public static void update(String oldName,String newName) {
    //1、判断要修改是否存在
    int index1 = isExsist(oldName);
    int index2 = isExsist(newName);
    
    if(index1 == -1 ) {
      System.out.println("商品不存在无法修改");
      return;
    }
    if(index2 != -1) {
      System.out.println("修改的商品已存在无法修改");
      return;
    }
    
    //2、修改商品
    names[index1] = newName;
    
  }
  
  /**
   * 删除商品
   * @param productName  删除商品的名称
   */
  public static void delete(String productName) {
    //1、判断要删除的商品是否存在
    int index = isExsist(productName);
    if(index == -1) {
      System.out.println("商品不存在,无法删除");
      return;
    }
    //2、考虑特殊情况:当数组的元素有效个数与数组的长度相等(扩容)
    if(size == names.length) {
      names = Arrays.copyOf(names, names.length+5);
    }
    //3、删除元素
    for (int i = index; i <= size; i++) {
      names[i] = names[i+1];
    }
    //4、数组的有效个数-1
    size--;
    
  }

  public static void queryAll() {
    //1、判断是否有商品
    if(size == 0) {
      System.out.println("暂无商品,请添加!");
      return;
    }
    System.out.println("商品如下:");
    
    //2、遍历输出商品
    for (int i = 0; i < size; i++) {
      if(i%5==0 && i != 0) {
        System.out.println();
      }
      System.out.print(names[i]+"\t");
    }
    System.out.println();
  }
  
  /**
   * 判断商品是否存在
   * @param productName 商品名称
   * @return   返回商品所在下标,下标为-1则表示不存在
   */
  public static int isExsist(String productName) {
    for (int i = 0; i < names.length; i++) {
      if(productName.equals(names[i])) {
        return i;
      }
    }
    return -1;
  }
}
目录
相关文章
|
6月前
|
存储 缓存 Java
Java数组全解析:一维、多维与内存模型
本文深入解析Java数组的内存布局与操作技巧,涵盖一维及多维数组的声明、初始化、内存模型,以及数组常见陷阱和性能优化。通过图文结合的方式帮助开发者彻底理解数组本质,并提供Arrays工具类的实用方法与面试高频问题解析,助你掌握数组核心知识,避免常见错误。
|
5月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
7月前
|
安全 Java API
Java 集合高级应用与实战技巧之高效运用方法及实战案例解析
本课程深入讲解Java集合的高级应用与实战技巧,涵盖Stream API、并行处理、Optional类、现代化Map操作、不可变集合、异步处理及高级排序等核心内容,结合丰富示例,助你掌握Java集合的高效运用,提升代码质量与开发效率。
322 0
|
7月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
610 0
|
7月前
|
存储 Java 索引
java 数组
在 Java 中,数组是一种数据结构,用于存储多个相同类型的数据元素。数组的大小一旦创建后就不能改变,因此它是固定长度的。Java 数组是一种 对象,即使它存储的值是基本类型(如 int、double 等),它也是一个对象引用。
184 0
|
前端开发 Java
java前端:删除数组中指定元素的方法
java前端:删除数组中指定元素的方法
287 1
|
存储 Java 索引
Java快速入门之数组、方法
### Java快速入门之数组与方法简介 #### 一、数组 数组是一种容器,用于存储同种数据类型的多个值。定义数组时需指定数据类型,如`int[]`只能存储整数。数组的初始化分为静态和动态两种: - **静态初始化**:直接指定元素,系统自动计算长度,如`int[] arr = {1, 2, 3};` - **动态初始化**:手动指定长度,系统给定默认值,如`int[] arr = new int[3];` 数组访问通过索引完成,索引从0开始,最大索引为`数组.length - 1`。遍历数组常用`for`循环。常见操作包括求和、找最值、统计特定条件元素等。
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
291 2
|
Java 索引
Java系列 之 Java复制(拷贝)数组的4种方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRan
这篇文章介绍了Java中数组复制的四种方法:`Arrays.copyOf()`、`Arrays.copyOfRange()`、`System.arraycopy()`和`clone()`方法,以及它们的使用场景和示例代码。